2011-10-17 166 views
1

所以我有以下查询:与MySQL触发查询语法错误

CREATE TRIGGER `before_delete` 
    BEFORE DELETE ON `abc` FOR EACH ROW 
    BEGIN 
     DELETE FROM def WHERE OLD.id = objID1 OR OLD.id = objID2; 
     DELETE FROM ghi WHERE OLD.id = objID; 
    END; 

但那么MySQL抱怨说,在1号线....

我做了什么是附近“END”语法错误错误?

回答

4

您需要利用DELIMTIER技巧在过程块中包含多个语句。否则,它无法区分程序结束和其内部语句结束的区别。在documentation页面上,有一个使用delimiter关键字的示例。

为了节省您的去那个页面,环顾四周的麻烦,我认为这将解决这个问题:

DELIMITER $$ 
CREATE TRIGGER `before_delete` 
BEFORE DELETE ON `abc` FOR EACH ROW 
BEGIN 
    DELETE FROM def WHERE OLD.id = objID1 OR OLD.id = objID2; 
    DELETE FROM ghi WHERE OLD.id = objID; 
END $$ 
DELIMITER ;