[英]How to update a field at the history table just if it changed ? using trigger
我有很多表(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!
這是您可以嘗試的方法
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 ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.