2014-09-05 61 views
0

我对表格中的触发器如下:触发增加表计数器值计数两次

CREATE TRIGGER tr_updatecount ON tbl_A 
AFTER UPDATE,INSERT AS BEGIN 
UPDATE tbl_B 
SET totalupdates = totalupdates+1 
WHERE siteid IN (select siteid 
        FROM inserted)  
END 

tbl_A有几个领域,其中之一是SITEID和tbl_B只有两个领域 - SITEID和totalupdates

我的问题是,当触发运行某些原因,该领域totalupdates 2而不是增加1

+0

触发器是否可能被触发两次? – MeanGreen 2014-09-05 14:22:47

+0

你的逻辑执行插入可能做一个初始插入然后更新,导致触发两次? – Kritner 2014-09-05 14:26:13

+0

不应该,即使我在表格中运行一个简单的插入命令,也会发生这种情况。无论如何,我不知道我该如何检查这个? – user1480192 2014-09-05 14:26:35

回答

1

最可能是你有没有考虑过含有多行插入的可能性,例如由于多行更新或插入。理论上“ ”插入的SELECT siteid可能返回多于一行。

在您可能想要阅读的名为“创建DML触发器来处理多行数据”的联机帮助中有一节。

另一种可能性是您在tbl_B上有另一个触发器,因为更新也会被执行。