|

楼主 |
发表于 2024-1-1 16:38:50
|
显示全部楼层
create table employee_info_update(id int primary key not null,
update_column VARCHAR(20),
old_value MEDIUMTEXT,
new_value MEDIUMTEXT,
update_time datetime);
# 创建一个名为employee_info_update的数据表,用来存放employee_1 被更新过的记录(具体到主键名称、哪个字段,新旧值对比),并记录更新时间
create trigger update_employee_info
after update on employee_1
for each row
begin
if new.age!=old.age then
insert into employee_info_update
values(new.id,'age',old.age,new.age,now());
end if;
if new.department!=old.department then
insert into employee_info_update
values(new.id,'department',old.department,new.department,now());
end if;
if new.post!=old.post then
insert into employee_info_update
values(new.id,'post',old.post,new.post,now());
end if;
end;
# 创建一个名为update_employee_info的触发器,在每次有更新时触发(字段级),发生更新后比对所有可能被更新的字段,如果old表上的取值与new表取值不同则说明该字段被更新,执行insert操作去增加一条该记录是哪个字段被更新的操作,包括记录主键,更新字段名称,字段原值、字段新值、更新时间
select * from employee_1;
update employee_1 set department='业务拓展二部',age=30 where id='2000016'
# 将id为2000013的员工所属机构调整为业务拓展二部,年龄修改为30岁
按照您刚才的回复修改代码如上,但是运行到update employee_1 set department='业务拓展二部',age=30 where id='2000016'这一句的时候报错如下:Duplicate entry '2000016' for key 'employee_info_update.PRIMARY' 应如何解决? |
|