我在sql2005/sql2008里面试了,可以实现一部分功能,但是要动态取得变动的字段,不太好取,只能把字段事先写死.update User set Hign=185,Sex= '女' output Deleted.Hign,Inserted.Hign,Deleted.Sex,Inserted.Sex得到如下的结果 High High Sex Sex ------------------------------- 175 185 男 女 现在的问题是,在不知道更新了哪个列的前提下,我怎么把更新字段前后的内容捕获到,并且存放在一个 记录变动表的一个字段当中去呢?得到如下类似的结果:ID TableName ChangeDetail 1 User 修改内容:Hign值:179 => 185 ,Sex: 男 => 女
翻阅了一下MSDN,与DBCC相关函数有以下一些,好像没有找到DBCC获取执行的sql脚本的函数啊?--信息语句
DBCC INPUTBUFFER
DBCC SHOWCONTIG
DBCC OPENTRAN
DBCC SQLPERF
DBCC OUTPUTBUFFER
DBCC TRACESTATUS
DBCC PROCCACHE
DBCC USEROPTIONS
DBCC SHOW_STATISTICS
--验证语句
DBCC CHECKALLOC
DBCC CHECKFILEGROUP
DBCC CHECKCATALOG
DBCC CHECKIDENT
DBCC CHECKCONSTRAINTS
DBCC CHECKTABLE
DBCC CHECKDB
--维护语句
DBCC CLEANTABLE
DBCC INDEXDEFRAG
DBCC DBREINDEX
DBCC SHRINKDATABASE
DBCC DROPCLEANBUFFERS
DBCC SHRINKFILE
DBCC FREEPROCCACHE
DBCC UPDATEUSAGE
--杂项语句
DBCC dllname (FREE)
DBCC TRACEOFF
DBCC HELP
DBCC TRACEON
关于触发器,可以参考一下这个。
http://blog.csdn.net/sdhdy/archive/2009/06/07/4249668.aspx
对于问题2,有没有什么办法?得到如下的结果:(自动解析变动的内容,获得变动前的值 和 变动后的值)ID TableName ChangeDetail
1 User 修改内容:Hign值:179 => 185 ,Sex: 男 => 女
High High Sex Sex
-------------------------------
175 185 男 女
现在的问题是,在不知道更新了哪个列的前提下,我怎么把更新字段前后的内容捕获到,并且存放在一个 记录变动表的一个字段当中去呢?得到如下类似的结果:ID TableName ChangeDetail
1 User 修改内容:Hign值:179 => 185 ,Sex: 男 => 女