gpt4 book ai didi

mysql - 在 Derby DB 中插入触发器之前

转载 作者:行者123 更新时间:2023-11-30 21:51:23 24 4
gpt4 key购买 nike

我正在使用 netbeans 构建一个 javafx 项目,并为此使用 derby 数据库。我有两个表,BOOKISSUE。我想创建一个 BEFORE INSERT trigger ON ISSUE 表,它检查 BOOK 表中名为“available”的 bool 字段的值。按下名为 BookIssue 的按钮时,应检查以下触发器。如果“available”的值为 false,则应弹出警告消息,否则必须执行插入操作。我无法正确获取触发命令。

String trigger = "CREATE TRIGGER toIssue NO CASCADE BEFORE INSERT ON ISSUE"
+ " FOR EACH ROW"
+ " BEGIN"
+ " SELECT isAvail from BOOK WHERE id = '"+ bookId + "'"
+ " IF isAvail = false"
+ " THEN RAISE_APPLICATION_ERROR(-20001,'Books Out of stock')"
+ " END IF"
+ " END";
databasehandler.execQuery(trigger);

我的日志中出现以下异常:

Exception at execQuery:dataHandlerSyntax error: Encountered "BEGIN" at line 1, column 71.

谁能帮我解决这个问题!我找不到与 Derby 有类似问题的任何其他地方。

最佳答案

我想你想要:ExecuteNonQuery()

此外,这一行是可疑的:

SELECT isAvail from BOOK WHERE id = '"+ bookId + "'"

触发器主体应该看起来更像这样:

DECLARE v_avail boolean;

SELECT b.isAvail INTO v_avail
FROM BOOK b
WHERE b.id = NEW.ID;

IF NOT v_isAvail THEN
RAISE_APPLICATION_ERROR(-20001,'Books Out of stock')"
END IF;

关于mysql - 在 Derby DB 中插入触发器之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47110743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com