|  | 
 
 
 楼主|
发表于 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' 应如何解决?
 | 
 |