2014-09-05 51 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上有另一個觸發器,因爲更新也會被執行。