我想要在表X
中的INSERT
之後立即將該記錄複製到另一個History
表中。觸發器是否能夠複製身份標識的主鍵?
現在該表的主鍵爲Identity
列,因此該記錄在實際插入前沒有主鍵ID。
我的問題是,如果我在這個記錄上做了一個trigger
我會得到該記錄的身份ID還是會保持空白?
我想要在表X
中的INSERT
之後立即將該記錄複製到另一個History
表中。觸發器是否能夠複製身份標識的主鍵?
現在該表的主鍵爲Identity
列,因此該記錄在實際插入前沒有主鍵ID。
我的問題是,如果我在這個記錄上做了一個trigger
我會得到該記錄的身份ID還是會保持空白?
只要確保你的聲明作爲觸發「之後」插入,不是「FOR」或「而不是」(猜你不會使用最後一個...;)
如果您執行「插入後」觸發器,則記錄已經存在,並且具有標識列的值。
是的身份在觸發器中可用,但請確保您正確地獲得該ID。
@@ identity,SCOPE_IDENTITY等不是您想要在觸發器中執行的操作!
SELECT @id = id FROM inserted
也是一個壞主意。
總是編寫觸發器以期望同時進行多項更改。當您一次向表中插入多條記錄時,上述方法都會導致細微但重要的錯誤。
正確的做法是要插入到審計表從插入表
即
INSERT INTO myAuditTable(Id, Datetime, user)
SELECT id, GETDATE(), USER_NAME())
FROM inserted