2016-11-13 49 views
0

我有以下表觸發器:插入的表如何工作?如何訪問其行?

Data --Table name 
ID -- Identity column 
PCode -- Postal Code 

我創建了以下觸發:

CREATE TRIGGER Trig 
ON Data 
FOR INSERT 
AS 
BEGIN 

    Select * from inserted 

END 

並插入下面的值

INSERT INTO Data VALUES (125) 
INSERT INTO Data VALUES (126) 
INSERT INTO Data VALUES (127) 

它顯示了這一點:

enter image description here

但我期待這樣的事情:

  • 一號插入後,觸發執行 - >一行顯示在inserted表。
  • 第二次插入後,執行觸發器 - >inserted表中顯示兩行。
  • 第3次插入後,執行觸發器 - >inserted表中顯示三行。

根據msdn.microsoft插入的所有行都在此表中。


如何訪問inserted表,以便我可以看到所有預期的行而不是分開的?

回答

1

你不能。從microsoft.com上的Use the inserted and deleted Tables文章可以看到:

插入的表在INSERT和UPDATE語句中存儲受影響的行的副本。

這意味着inserted表將只包含當前INSERTUPDATE語句行。

如果您確實想要查看多個此類INSERTUPDATE語句的所有行,則必須將這些行存儲在您自己創建的表中。

0

在觸發器中有2個表格可用,插入和刪除。表XXX上的每個更新實際上是從XXX開始的刪除行X,然後是表XXX中行X的插入。所以插入觸發器內的是插入內容的副本。觸發器可以做很多事情,但觸發器很危險。

例如,在一個性能演出中,我發現一個巨大的SP由一個觸發器運行,我們放棄它並且數據庫恢復在線狀態。或者另一個例子,如果你做了一個錯誤的審計登錄的觸發器,你可以關閉服務器。

相關問題