日期:2014-05-17  浏览次数:20488 次

关于触发器更新值问题



ALTER Trigger [dbo].[UpdateCheckAddess]
            On [dbo].[CheckPD]                              
            for Update                               
          As                                           
            if Update(ReceAddress)     
            begin
              UPDATE CheckPD SET 
              ReceAddressJ=ReceAddress.ReceAddressJ,
              ReceAddress1=ReceAddress.ReceAddress,
              Contact=ReceAddress.Contact,
              Phone1=ReceAddress.Phone1,
              Phone2=ReceAddress.Phone2
              FROM CheckPD,ReceAddress 
              WHERE CheckPD.ReceAddress=ReceAddress.ID
end


--判断ReceAddress列的值是否被前台SQL语句更新过,如果更新过就更新上面的语句,
问题:这样写触发器就把表内所有符合条件的全部更新了,会增加服务器压力,怎么写只更新前台操过的数据,而不是全部,谢谢!

------解决方案--------------------
这样   update from inserted    ....inserted临时表存放前台更新的数据的新值
------解决方案--------------------
你可以再加个条件 CheckPD 表里面 这些要更新的字段 ReceAddressJ。。。 为空
------解决方案--------------------
引用:
引用:你可以再加个条件 CheckPD 表里面 这些要更新的字段 ReceAddressJ。。。 为空

这样也不太好,难道非要我从前台传回更新那些数据的ID,进行更新吗?...

不要你传id呀,更何况触发器不能传参

你不是想更新 表中那几列为空的字段吗
你就在条件中把这几列为空给加进去可以吗