Есть ли способ настроить 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 |
+----+-------+---------------------+
В действующей БД должна быть создана метка времени в строках, а в БД изменений - времяотметка о том, когда была обновлена текущая строка БД.БД изменений также не будет иметь первичных ключей и ограничений внешнего ключа.
Я использую InnoDB и MySQL 5.1.49, но могу обновить при необходимости.