2013-02-02 37 views
0

我想在phpmyadmin中插入表table1之前更新两个表,但是phpmyadmin在创建此触发器(Error in MySQL syntax)后显示错误。有多个动作的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它不容创建。任何想法如何创建这种类型的触发器?在此先感谢您的帮助。

+0

旧的,但也许仍然可用:http://stackoverflow.com/questions/1921627/multiple-insert-update-statements-inside-trigger –

回答

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 ;