我正在尝试使用 InnoDB 创建一个在 MySQL 5.5.28中执行多个操作的触发器。
我有两个表,“test”和“test_watcher”:在触发器的帮助下,对第一个表的更改记录在 watcher 表中。最后一个触发器需要在 上执行 2 次操作DELETE
,它可以在 MySQL Workbench (with 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
。
我知道它可以DELIMITER $$
在 Workbench 中使用,但 JDBC 不支持它。
我已经在 PostgreSQL 中实现了它,并会在必要时发布代码。