2011-08-03 37 views
3

我想要在表X中的INSERT之後立即將該記錄複製到另一個History表中。觸發器是否能夠複製身份標識的主鍵?

現在該表的主鍵爲Identity列,因此該記錄在實際插入前沒有主鍵ID。

我的問題是,如果我在這個記錄上做了一個trigger我會得到該記錄的身份ID還是會保持空白?

回答

3

如果您執行「插入後」觸發器,則記錄已經存在,並且具有標識列的值。

5

是的身份在觸發器中可用,但請確保您正確地獲得該ID。

@@ identity,SCOPE_IDENTITY等不是您想要在觸發器中執行的操作!

SELECT @id = id FROM inserted 

也是一個壞主意。

總是編寫觸發器以期望同時進行多項更改。當您一次向表中插入多條記錄時,上述方法都會導致細微但重要的錯誤。

正確的做法是要插入到審計表從插入表

INSERT INTO myAuditTable(Id, Datetime, user) 
SELECT id, GETDATE(), USER_NAME()) 
FROM inserted