在更新时创建触发器以将旧值插入MYSQL中的其他表

use*_*192 5 mysql sql triggers sql-update sql-insert

我有两张桌子。第一个是我的人员表,它具有ID,名称,creation_date作为值,我有一个old_person表(id,名称,modified_date),我想在其实际更改之前填充人员的值。我将如何处理?我尝试过触发器,但失败了。

我尝试如下

create trigger Person_Trigger Update on person
before update
as
insert into old_person(id, name, modified) 
select id, new.name, getdate()
from person
Run Code Online (Sandbox Code Playgroud)

这给了我语法错误...那里也没有太多的触发器引用,一点点推动将不胜感激!

Dan*_*Dan 1

尝试这个:

DELIMITER \\
CREATE TRIGGER `Person_Trigger`
BEFORE UPDATE ON `Person`
FOR EACH ROW
BEGIN
DECLARE date_modified datetime;

SET date_modified = NOW();

INSERT INTO old_person(id, name, modified) 
VALUES (OLD.id, OLD.name, date_modified);
END\\
Run Code Online (Sandbox Code Playgroud)

这种语法适用于我自己的项目。您可能还需要在开始触发器之前声明分隔符。另外,如果您想使用NEW关键字,则应该AFTER更新它。OLD如果您打算继续BEFORE在触发器上使用 update,请切换到关键字。