积极答复者
如何做到仅更新数据变动的列?

问题
-
在SQL Server 中,在UPDATE触发器中,若列x1进行了更新(IF UPDATE(x1)),则更新其它表中的相关列
在窗体中,保存时,CommadText用了类似这样的语句:UPDATE table SET x1 = @x1, x2 = @x2, x3 = @x3 WHERE (x1 = @Original_x1)
运行时发现,即使x1没有改动,触发器IF UPDATE(x1)后的语句也会运行,就是说,x1也被认为更新了,这使得IF UPDATE(x1)失去了意义,每次更新时总会触发,从而大大影响了执行效率
显然,根据每行数据动态构造CommadText中的Update命令是不现实的,那么,如何才能做到x1更新时触发,不更新时不触发呢?这在VFP中的远程视图是自动实现的,x1改动了,会触发,未改动,则不会触发,从而实现客户端与服务器行动协调一致
答案
全部回复
-
您是否可以在UPDATE触发器中 增加判断 (IF UPDATE(x1))外增加“是否更新值与原值相等”的逻辑呢
成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我- 已标记为答案 BoberSongModerator 2010年8月6日 6:19
- 取消答案标记 大海怪 2010年8月13日 3:12
- 已标记为答案 Allen Chen - MSFTModerator 2010年8月23日 2:12
- 取消答案标记 大海怪 2011年6月3日 8:03
-
比较deleted和inserted里对应字段的值
http://feiyun0112.cnblogs.com/
目前情况下,只好如此了!但VFP中的远程视图在这点上做得很好,同一视图,同一批更新数据,各行却能分别测得每列数据是否变化
韩立学