首页 > 解决方案 > 如何使用触发器创建 2 个档案?

问题描述

要从名为 store 的表创建存档,我想在更新之前备份一行并将其存储在特定表(名为:audit)中。

在我想备份同一行并将其存储在更新的特定表(名为:histo)中之后。

我想到了一个触发器。

像这样,但它不起作用,因为有 2 INSERT INTO

BEGIN
IF (NEW.storage_0 != OLD.storage_0 OR NEW.storage_1 != OLD.storage_1) 
THEN
INSERT INTO audit(id,Date_insert,name,storage_1,storage_2) VALUES (OLD.id,OLD.Date_insert,OLD.name,OLD.storage_1,OLD.storage_2);
INSERT INTO histo(id,Date_insert,name,storage_1,storage_2) VALUES (NEW.id,NEW.Date_insert,NEW.name,NEW.storage_1,NEW.storage_2);

ELSEIF (NEW.Date_insert IS NULL)
THEN 
INSERT INTO audit(id,Date_insert,name,storage_1,storage_2) VALUES (OLD.id,OLD.Date_insert,OLD.name,OLD.storage_1,OLD.storage_2);
INSERT INTO histo(id,Date_insert,name,storage_1,storage_2) VALUES (NEW.id,NEW.Date_insert,NEW.name,NEW.storage_1,NEW.storage_2);

END IF; 
END

标签: mysqldatabasetriggersbackup

解决方案


我终于找到了问题所在。如果要添加新行,请勿使用“id”字段。


推荐阅读