2010-04-19 2 views
1

У меня есть сценарий миграции, который читает из одного БД и записывается во вторую БД.log mysql updates

Обычно я обновляю существующие записи. Как я могу войти обновления, как:

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

Это означает, что PRODUCTID 125 имел название «продукция1» и стал «тест» после обновления и была цена «125», которая стала «140»

Одна мысль заключается в том, чтобы прочитать запись, сохранить значения, а затем обновить, снова прочитать значения и сравнить и записать необходимые поля.

Существуют ли какие-либо другие методы?

ответ

2

Вы можете использовать триггер и сохранить изменения в другой таблице.

Сверху моей головы (следующее предполагает, что продукт никогда не будет обновлен);

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 ;