删除时触发将行插入到另一个表中

2024-02-02

我正在尝试创建一个触发器,它将包含所有列的行插入到另一个表中:

这是我到目前为止所得到的,但它不起作用:

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

错误的根源是你错过了 requiredFOR EACH ROW条款为CREATE TRIGGER https://dev.mysql.com/doc/refman/5.6/en/create-trigger.html陈述。

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, ...);

这里有一个SQL小提琴 http://sqlfiddle.com/#!2/e50d7d/1 demo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除时触发将行插入到另一个表中 的相关文章