论坛上看到的一个帖子:
(谁有办法确定数据库里的数据增量吗?---比如从昨天晚上到今天早上共有200张表发生变化,我想知道哪些表发生了变化,其中有些表是有时间戳的,有些是没有时间戳的。 )
发生了变化是什么意思? 是表中增加了数据(insert)?还是修改了表中的数据(update)?亦或是删除了表中的数据(delete)?
我个人把你说的数据增量理解为增加了数据,我的思路如下:
1.创建表b来记录所有发生数据变化的表,b包含两个字段(table_name, date)
table_name nverchar //表名
date datetime //表更新时的日期
2.create trigger trigger_a on a for insert
as
insert into b(table_name,date) select table_name,getdate() from inserted i
where not exists(select 1 from b where b.table_name = i.table_name and DATEDIFF(dd,b.date,getdate()) = 0 )
获取当前正在被更新的表名是个问题,具体实现可以参考http://www.itpub.net/thread-582900-1-1.html.
这里我采用一个很笨的办法,在所有表中增加一个字段,值为当前表的表名(如值依次为table_1, table_2, ......table_200)
同时假设楼主以天为单位查看表的更新情况,如果一张表某一天被更新了多次,则当天只在b表中插入1条记录
代价是要每张表上都要创建一个trigger,同时都要新建一个栏位来记录表名,很笨啊,应该有更好的办法...
以上方法没有实践, 可行性需要楼主验证.