Gen*_*nov 2 mysql sql triggers
我正在尝试创建一个触发器,它将包含所有列的行插入到另一个表中:
这是我到目前为止所得到的,但它不起作用:
delimiter $$
CREATE TRIGGER item_deleted_move AFTER DELETE ON item
begin
insert into item_deleted (val1, val2, ...) values (old.val1, old.val2, ...);
end$$
delimiter ;
Run Code Online (Sandbox Code Playgroud)
错误的根源是您错过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 ;
Run Code Online (Sandbox Code Playgroud)
现在,如果您在触发器中除了插入之外没有做任何其他事情,您可以通过不使用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, ...);
Run Code Online (Sandbox Code Playgroud)
这是一个SQLFiddle演示
| 归档时间: |
|
| 查看次数: |
8589 次 |
| 最近记录: |