我有很多领域(col)的商务桌, field1,field2,field3 ...
我想跟踪业务表中的更改,并将它们保存在history_table中。
我想我可以用触发器来实现吗?但我的问题是我不知道如何实现触发器,只会将历史表写入已更改的字段。
所以例如:
if (NEW.field1 != OLD.filed1 and NEW.field3 != OLD.field3)
作为
insert INTO history (field1,field3) VALUES (OLD.field1,OLD.field3)
注意我没有插入field2!
答案 0 :(得分:0)
这是您可以尝试的方式
delimiter //
create trigger history_update after insert on business
for each row
begin
declare field_1 varchar(200) default NULL ;
declare field_2 varchar(200) default NULL ;
declare field_3 varchar(200) default NULL ;
declare field_4 varchar(200) default NULL ;
declare field_5 varchar(200) default NULL ;
....
declare field_30 varchar(200) default NULL ;
if(NEW.field1 != OLD.filed1) then
set field_1 = OLD.field1 ;
end if ;
if(NEW.field2 != OLD.filed2) then
set field_2 = OLD.field2 ;
end if ;
...............
...............
if(NEW.field30 != OLD.filed30) then
set field_30 = OLD.field30 ;
end if ;
insert into history
(field1,field2,field3.......field30)
values
(field_1,field_2,field_3......field_30);
end ; //
delimiter ;