如何最好地检查SQL表内容是否未更改?

时间:2013-03-15 18:23:41

标签: mysql

假设我有下表名为“contacts”:

id|name|age
1|John|5
2|Amy|2
3|Eric|6

在获取计算机上文件的校验和时,是否有一些简单的方法可以检查此表是否与sha / md5哈希的工作方式有何不同?

因此,例如,如果在此表中添加了新行,或者在表中更改了值,则“散列”或某些生成的值会显示该表已更改。

如果没有直接机制,那么最好的方法是什么(可能是一些arbirary哈希机制,只要该方法强调性能和最小化延迟)?它可以应用于多个表吗?

3 个答案:

答案 0 :(得分:1)

没有通过SQL获取该信息的直接机制。

您可以考虑为每一行添加额外的LastModified列。要知道上次修改表的时间,请选择该列的最大值。

您可以通过在表上使用trigger来获得类似的结果,用于INSERT,UPDATE和DELETE,它会使用上次修改的时间戳更新单独的表。

答案 1 :(得分:0)

如果您想知道某些事情是否发生了变化,您需要进行比较。例如日期。您可以添加一个包含两列的表,即tablename和timestamp,并为您要控制的表上的事件编写触发器,因此此触发器将更新此控制表的timestamp列。

答案 2 :(得分:0)

如果表格不是太大,您可以复制整个表格。如果要检查更改,可以查询旧数据与新数据。

drop table  backup_table_name;
CREATE TABLE backup_table_name LIKE table_name;
INSERT INTO backup_table_name SELECT * FROM `table_name`;