如何在Java中验证表没有被修改?



我正在编写一些测试,我想在这些特定的测试期间验证我的数据库没有被修改。是否有一种简单的方法可以做到这一点,而不需要我为每个表编写单独的查询?基本上,我想要这样写:

 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并比较结果。

查询 all_tab_modification user_tab_modification 表,获取所需信息。

表有以下列:

  • TABLE_OWNER修改表的所有者。
  • TABLE_NAME修改表名
  • PARTITION_NAME修改后的分区名称
  • SUBPARTITION_NAME修改后的子分区名称
  • INSERTS自上次收集统计信息以来的插入的大致数量
  • UPDATES自上次统计数据收集以来的大概更新数
  • DELETES自上次收集统计数据以来的大约删除次数
  • TIMESTAMP表上次被修改的时间
  • DROP_SEGMENTS自上次分析以来丢失的分区和子分区段数

在查询表之前,必须通过运行GATHER_TABLE_STATS过程收集统计数据。

源来源

为了获得数据库中所有表中的所有记录,这取决于您正在使用的数据库,以及您需要的代码。

请注意,比较表中的数据可能不是您想要的,比较上次修改的时间戳可能更好。

在您的数据库上实现一个触发器,当您的表被修改时更新日志表。

然后在运行测试后检查日志表

相关内容

  • 没有找到相关文章

最新更新