2015-01-02 189 views
0

我想創建一個觸發器,它會插入所有列一行到另一個表中的另一個表:觸發插入行插入刪除

這是我這麼遠,但它不是」牛逼的工作:

delimiter $$ 
CREATE TRIGGER item_deleted_move AFTER DELETE ON item 
begin 
insert into item_deleted (val1, val2, ...) values (old.val1, old.val2, ...); 
end$$ 
delimiter ; 
+0

#1064 - 你在你的SQL語法錯誤; – Genov

回答

2

錯誤的根源在於你錯過要求FOR EACH ROW子句CREATE TRIGGER聲明。

DELIMITER $$ 
CREATE TRIGGER item_deleted_moved 
AFTER DELETE ON item 
FOR EACH ROW -- You missed this part 
BEGIN 
    INSERT INTO item_deleted(val1, val2, ...) VALUES (old.val1, old.val2, ...); 
END$$ 
DELIMITER ; 

現在,如果你沒有做任何事情在你的觸發,除了插入您可以通過不使用BEGIN ... END塊簡化它。在這種情況下,你不需要改變分隔符。

CREATE TRIGGER item_deleted_moved 
AFTER DELETE ON item 
FOR EACH ROW 
    INSERT INTO item_deleted(val1, val2, ...) VALUES (old.val1, old.val2, ...); 

這裏是一個SQLFiddle演示

0

你改變了分隔符$$但是在插入結束時,您正在使用;