查询以查看新/更新的表

时间:2011-11-11 17:50:09

标签: sql sql-server

我使用以下内容列出所有表的行数:

 select convert(varchar(30),object_name(id)) [Table Name], rows, ModifiedOn from sysindexes
where object_name(id) not like 'sys%' and indid = 1
order by object_name(id)

我承认我在某个地方找到了这个,并且只对它正在做的事情有一个概念性的想法。但就我的目的而言,我想要执行应用程序操作并对数据库中发生的事情进行逆向工程,它可以很好地识别新行(我将结果复制并粘贴到excel之前进行比较)。

现在,我还想知道哪些表已更新。在(几乎)我的所有表上都有一个ModifiedOn列,所以我希望我可以将其最大值添加到我的输出中,这将告诉我表的内容上次更新的时间。

我不知道如何加入这两个,感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我强烈建议不要使用这种方法,因为它依赖于DB并且不可靠。

在ON UPDATE上创建ON INSERT会触发正确的解决方案,然后在触发器中,您可以将新的或更新的数据放入可以查询的单独表中。触发器是监视数据库中的更改而不在使用它们的应用程序中执行任何操作的工具。

表MY_TABLE(id,name)上的'更新后'的示例触发器:

CREATE TRIGGER mark_changes AFTER UPDATE ON my_table FOR EACH ROW
BEGIN
  INSERT INTO tracking_table VALUES "Change in table my_table", OLD.id, NEW.id
END$$

这假设您有一个表tracking_table(description,old_id,new_id)

相关问题