2010-04-19 120 views
1

我有一個遷移腳本,它從一個數據庫讀取並寫入第二個數據庫。日誌mysql更新

我通常會更新現有記錄。我如何才能登錄,如更新:

productID : 125 
title : Product1 => test update 
price : 125 => 140 

這意味着,產品ID 125曾題「產品1」和更新後成爲「試驗」和有價「125」,這成了「140」

一個想法是讀取記錄保存的值,然後更新,再次讀取值和比較並記錄必要的字段。

是否存在其他方法?

回答

2

您可以使用觸發器並將更改存儲在另一個表中。

從我的頭頂開始(以下假定productId永遠不會更新);

create table main (
    `id` int not null auto_increment, 
    `title` varchar(30) not null, 
    `price` float not null, 
    primary key(`id`) 
); 

create table logger (
    `id` int not null auto_increment, 
    `productId` int not null, 
    `from_title` varchar(30) not null, 
    `to_title` varchar(30) not null, 
    `from_price` float not null, 
    `to_price` float not null, 
    primary key(`id`) 
); 

delimiter // 
create trigger my_logger before update on main 
begin 
    insert into 
     logger 
    set 
     `productId`=OLD.`id`, 
     `from_title`=OLD.`title`, 
     `to_title`=NEW.`title`, 
     `from_price`=OLD.`price`, 
     `to_price`=NEW.`title`; 
end;// 
delimiter ;