记录mysql更新

时间:2010-04-19 10:34:56

标签: mysql logging

我有一个从一个DB读取并写入第二个DB的迁移脚本。

我通常会更新现有记录。如何记录以下更新:

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

这意味着产品ID 125的标题为“Products1”,更新后成为“测试”,价格“125”变为“140”

一种想法是读取记录保存值然后更新,再次读取值和比较并记录必要的字段。

是否存在其他方法?

1 个答案:

答案 0 :(得分: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 ;