SQL触发器里update(字段名)没有变化怎么写语句

ALTERTRIGGER[dbo].[updtenum]ON[dbo].[rdrecords10]FORinsert,delete,UPDATEASifupdate(iQ... ALTER TRIGGER [dbo].[updtenum] ON [dbo].[rdrecords10]
FOR insert,delete,UPDATE
AS
if update( iQuantity) and not(update(iNum))---如果iQuantity有变化并且iNum没有变化跳出触发器
begin
return
end
else
if update(iNum) ----如果iNum有变化更新iQuantity的值
begin
update dbo.rdrecords10 set iQuantity=round(rdrecords10.iNum*(select cInvDefine11 from inventory where cInvCode=rdrecords10.cInvCode),2)
from rdrecords10 inner join inserted on rdrecords10.AutoID=Inserted.AutoID
end
现在是不论iNum有没有变化都会更新iQuantity的值,那里写的不对
展开
 我来答
HJ_3000
2017-08-25 · TA获得超过563个赞
知道小有建树答主
回答量:1264
采纳率:78%
帮助的人:46.6万
展开全部
要比较 Deleted 和 Inserted 2表中的值是否一致 ,才能确定字段是否被修改了。
如果字段A修改前是AAA修改后也是AAA,那也会触发 if update(字段A) 成立 。
追问
能不能给修改一下
追答

一个例子

  IF UPDATE(iNum)
  BEGIN
    IF EXISTS ( SELECT  1
                FROM    Inserted N
                WHERE   EXISTS ( SELECT 1
                                 FROM   Deleted O
                                 WHERE  (N.ID=O.ID) AND
                                        (N.iNum<>O.iNum) ) )
    BEGIN
      //iNum值已经更改
    END;
  END;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式