是否有任何方法可以在每次更改行时设置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开始.