Mysql触发器有多个动作

时间:2013-02-02 18:08:40

标签: mysql sql triggers

我想在插入表table1之前更新两个表,在phpmyadmin中,但phpmyadmin在创建此触发器后显示错误(MySQL语法中的错误)。

这有效:

CREATE TRIGGER `my_trig`   
BEFORE INSERT ON `table1` 
FOR EACH ROW 
update table2 
set 
attr = attr+NEW.attr
where table2.id = NEW.id;

这也有效(当然没有第一个触发器):

CREATE TRIGGER `my_trig`   
BEFORE INSERT ON `table1` 
FOR EACH ROW 
update table3 
set 
attr = attr+NEW.attr
where table3.id = NEW.id;

但是使用BEGIN- update1; update2; -END无法创建它。任何想法如何创建这种类型的触发器?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在set语句

之后你有额外的逗号
attr = attr + NEW.attr,

修复,

CREATE TRIGGER `my_trig`   
BEFORE INSERT ON `table1` 
FOR EACH ROW 
UPDATE   table2 
SET     attr = attr + NEW.attr // <=== removed
WHERE   table2.id = NEW.id;

使用BEGIN-END

DELIMITER $$ 
CREATE TRIGGER `my_trig`   
BEFORE INSERT ON `table1` 
FOR EACH ROW
BEGIN 
    UPDATE   table2 
    SET     attr = attr + NEW.attr
    WHERE   table2.id = NEW.id;
END $$ 
DELIMITER ;