【问题标题】:Mysql trigger with multiple actions [closed]具有多个动作的Mysql触发器[关闭]
【发布时间】:2013-02-02 18:08:39
【问题描述】:

我想在 phpmyadmin 中插入表 table1 之前更新两个表,但 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 无法创建它。任何想法如何创建这种类型的触发器?在此先感谢您的帮助。

【问题讨论】:

标签: mysql sql triggers


【解决方案1】:

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 ;

【讨论】:

    猜你喜欢
    • 2013-11-29
    • 2011-04-03
    • 2020-07-09
    • 1970-01-01
    • 2011-08-31
    • 2020-09-22
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多