好吧,我认为您唯一的选择是创建一个历史记录表。我在触发器的帮助下完成了这项工作。
在每次更新时,您为每个更改的值插入一行。
我的历史表如下所示(MySql):
CREATE TABLE IF NOT EXISTS `history` (
`id_history` INT NOT NULL AUTO_INCREMENT ,
`event` ENUM('INSERT', 'UPDATE', 'DELETE') NOT NULL ,
`table` VARCHAR(255) NOT NULL ,
`id` INT NOT NULL ,
`field` VARCHAR(255) NULL ,
`old_value` TEXT NULL ,
`datetime` DATETIME NOT NULL ,
PRIMARY KEY (`id_history`);
和触发器:
CREATE TRIGGER test_table_update BEFORE UPDATE ON test_table
FOR EACH ROW
BEGIN
IF OLD.value1 != NEW.value1 THEN
INSERT INTO history VALUES(NULL, 'UPDATE', 'test_table', OLD.id_test_table, 'value1', OLD.value1, NOW());
END IF;
...
END; //
使用此信息,您可以撤消所有更改并将其设置回特定日期。