我正在编写一些测试,我想在这些特定测试期间验证我的数据库是否未被修改。有没有一种简单的方法可以做到这一点,不需要我为每个表写单独的查询?基本上,我想要这样的事情:
public Map<String,ResultSet> getDbSnapShot(List<String> tableNames)
{
//get rows for specified tables to check from tableNames parameter
//returns a map where the key is the table name and the value is the result set
}
public void verifySnapShotsAreEqual(Map<String,ResultSet> snapShot1, Map<String,ResultSet> snapshot2)
{
//compare snapshot1 and snapshot 2, verify no rows have been modified
}
然后我会在测试前后调用getDbSnapShot并比较结果。
非常感谢。
答案 0 :(得分:3)
查询 ALL_TAB_MODIFICATIONS 或 USER_TAB_MODIFICATIONS 表格并获取所需信息。
该表包含以下列:
在查询表之前,您必须通过运行GATHER_TABLE_STATS过程来收集统计数据。
答案 1 :(得分:2)
为了获取数据库中所有表中的所有记录,它将取决于您使用的数据库以及您需要的确切代码。
请注意,比较表中的数据可能不是您想要的,比较上次修改的时间戳可能会更好。
答案 2 :(得分:0)
在数据库上实现一个触发器,在修改表时更新日志表。
然后在运行测试后检查日志表。