簡體   English   中英

如何更改歷史記錄表中的字段,即使它已更改? 使用觸發器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM