0

phpmyadminでテーブルに挿入する前に2つのテーブルを更新したいのです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て作成することはできません。このタイプのトリガーを作成する方法はありますか?よろしくお願いします。

4

1 に答える 1

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 ;
于 2013-02-02T18:12:32.790 に答える