我想在插入表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
无法创建它。任何想法如何创建这种类型的触发器?在此先感谢您的帮助。
答案 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 ;