gpt4 book ai didi

mysql - 当 'BEFORE UPDATE' 触发器触发时,如何更新 MySQL 表行?

转载 作者:行者123 更新时间:2023-11-29 06:57:30 24 4
gpt4 key购买 nike

我创建了一个表

数据库名称 - mytrigger;
表名称 - employee_audit

use mytrigger;
create table employee_audit(
id int auto_increment primary key,
employeeNumber int not null,
lastName varchar(50) not null,
changee datetime default null,
action varchar(50) default null
);

之后,我创建了一个更新触发器

我的触发器名称是

before_employees_update

DELIMITER $$
create trigger before_employees_update
before update on employee_audit
for each row
begin
insert into employee_audit
set action ='update',
employeeNumber = OLD.employeeNumber,
lastName = OLD.lastName,
changee = now();
end$$
DELIMITER ;

之后,我使用此命令在表中插入值 ->

insert into employee_audit values(1,112,'prakash','2015-11-12 15:36:20' ,' ');

After that, I want to update my table row where id =1

update employee_audit set lastName = 'Sharma' where employeeNumber =112;

但没有执行并出现错误

ERROR 1442 (HY000): Can't update table 'employee_audit' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

当我在Google上搜索时,我发现很多问题都有同样的错误。但无法解决我的问题。我无法更新行的原因是什么?

最佳答案

我的建议是,您可以创建一个日志表,例如employee_audit_LOG

在主表中的每次插入或更新时,您都可以在此表中创建新条目或更新现有记录。

您还可以将 updated_timestamp 列 添加到 LOG 表中,该表维护特定记录的更新时间。

关于mysql - 当 'BEFORE UPDATE' 触发器触发时,如何更新 MySQL 表行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45007896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com