【发布时间】:2013-01-15 09:42:58
【问题描述】:
我正在尝试使用 InnoDB 创建一个 在 MySQL 中执行多个操作的触发器 5.5.28。
我有两个表,“test”和“test_watcher”:在触发器的帮助下,对第一个表的更改记录在 watcher 表中。最后一个触发器需要在 DELETE 上执行 2 次操作,它可以在 MySQL Workbench(使用 DELIMITER)中工作,但如果我使用 JDBC 创建它就不行。
CREATE TRIGGER `AD_test_FER` AFTER DELETE
ON `test`
FOR EACH ROW
BEGIN
-- if it's been inserted, modified and deleted but never synced,
-- the revision is NULL: no one needs to know about it
DELETE FROM test_watcher WHERE pk = OLD.id AND revision IS NULL;
-- if it has been synced already, we just update the flag
UPDATE test_watcher SET flag = -1 WHERE pk = OLD.id;
END;
我不断收到com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax。
我知道它适用于 Workbench 中的 DELIMITER $$,但 JDBC 不支持它。
我已经在 PostgreSQL 中实现了它,如果需要,我会发布代码。
【问题讨论】:
-
你有没有机会使用connection property
allowMultiQueries=true。这可能会搞砸事情,因为它可能只是在;上分裂。 -
很好,我没有意识到这一点。我检查了它,它似乎工作。感谢您指出这一点。
标签: mysql jdbc triggers innodb