MySQL数据版本控制

是否有任何方法可以在每次更改行时设置MySQL,然后使用最初的数据创建一行到另一个表/数据库? (带时间戳)

如果是这样我怎么去做呢?

例如.

UPDATE `live_db`.`people`
SET    `live_db`.`people`.`name` = 'bob'
WHERE  `id` = 1;  

在更新之前发生这种情况:

INSERT INTO `changes_db`.`people`
SELECT *
FROM   `live_db`.`people`
WHERE  `live_db`.`people`.`id` = 1;  

如果你再次这样做会导致这样的事情:

`live_db`.`people`
+----+-------+---------------------+
| id | name  | created             |
+----+-------+---------------------+
| 1  | jones | 10:32:20 12/06/2010 |
+----+-------+---------------------+

`changes_db`.`people`
+----+-------+---------------------+
| id | name  | updated             |
+----+-------+---------------------+
| 1  | billy | 12:11:25 13/06/2010 |
| 1  | bob   | 03:01:54 14/06/2010 |
+----+-------+---------------------+

实时DB需要在行上创建时间戳,并且更改DB需要具有更新实时DB行的时间戳.
更改DB也没有主键和外键约束.

我正在使用InnoDB和MySQL 5.1.49,但如果需要可以升级.

解决方法:

使用触发器

MySQL支持triggers从MySQL 5.0.2开始.

上一篇:dreamhappy博客索引


下一篇:php – 在触发器中使用分隔符的Mysql错误