@@RowCount和“SET NOCOUNT ON”在触发器中使用的先后顺序引起的问题

本文介绍了一种在SQL触发器中使用@@ROWCOUNT与SET NOCOUNT ON时可能出现的问题。当这两者的顺序不当,可能会导致@@ROWCOUNT无法正确返回受影响的行数,从而影响触发器的功能。文章通过一个具体的例子展示了如何调整这两者的顺序来解决问题。

一般我们在触发器中都会使用@@ROWCOUNT和SET NOCOUNT ON。但是如果不注意它们之间的顺序则可能出问题。今天写了一个触发器一直不起作用,找了很久一直没有找到原因。 代码如下:

 

ALTER TRIGGER [trg_Houses_Updated]
   
ON  [dbo].[Houses]
   AFTER 
UPDATE
AS 
BEGIN
    
SET NOCOUNT ON;

    
IF @@ROWCOUNT = 0
    
RETURN;


    ...
END

 

 

最后突然想起来可能是SET NOCOUNT ON的原因,使@@RowCount不起作用了。然后尝试的将SET NOCOUNT ON和@@RowCount的前后顺序条换了一下果然可以使用了。修改后的代码如下:

 

 1 ALTER TRIGGER [trg_Houses_Updated]
 2    ON  [dbo].[Houses]
 3    AFTER UPDATE
 4 AS 
 5 BEGIN
 6     IF @@ROWCOUNT = 0
 7         RETURN;
 8 
 9     SET NOCOUNT ON;
10     ...
11 END

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值