我有一個表並希望插入正在更新或刪除的記錄的當前值。使用觸發器的SQL Server 2005歷史記錄表
我試圖在更新前和刪除前創建觸發器,但SQL Server 2005不喜歡前面的單詞。
我如何得到這個工作?
我想觸發取當前記錄,並將其複製到歷史表是基表與dateBackedUp
兩個附加字段(即需要GETDATE())和場稱爲action
鏡(即採取行動「更新」或刪除「)
請幫助
我有一個表並希望插入正在更新或刪除的記錄的當前值。使用觸發器的SQL Server 2005歷史記錄表
我試圖在更新前和刪除前創建觸發器,但SQL Server 2005不喜歡前面的單詞。
我如何得到這個工作?
我想觸發取當前記錄,並將其複製到歷史表是基表與dateBackedUp
兩個附加字段(即需要GETDATE())和場稱爲action
鏡(即採取行動「更新」或刪除「)
請幫助
SQL Server不具有BEFORE INSERT
或BEFORE DELETE
的概念。這些審計操作實際上並不需要在行動之前執行,大多數情況下 - 只需使用已有的觸發器即AFTER INSERT
和AFTER UPDATE
即可。
使用已刪除的表工作,它 給了我將要 更新的數據。插入的表格提供了 新的值...不是我想要 進行記錄的那些值。
當你做一個AFTER UPDATE
觸發時,Inserted
僞表中包含的新的價值觀 - 與Deleted
表包含舊值。因此,對於AFTER UPDATE
觸發器,您可以訪問兩個僞表並獲取舊值和新值。
AFTER INSERT
觸發器只能訪問Inserted
僞表,其中包含插入的值。
AFTER DELETE
觸發器只能訪問Deleted
僞表,其中包含已刪除的行的值。
你並不需要使用before
關鍵字。您可以像平常一樣創建一個觸發器,然後從deleted
表中選擇,該表在觸發器被...觸發時創建。
如
create trigger Audit
on tblCustomers
after update, delete
insert into tblAudit
select * from deleted;
(未經測試,因爲我不這裏有一個SQL服務器,但如果不工作,那麼對於Create Trigger
的BOL條目應該告訴你關於deleted
表)
create TRIGGER [update_Project] ON Project
FOR UPDATE
AS
INSERT project_history
SELECT * FROM deleted
使用已刪除的表格的作品,因爲它給了我將被更新的數據。插入的表提供了新的值...不是我想要記錄的值。
如果您發佈的是代碼或XML,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼」按鈕(101 010),以良好地格式化和語法突出顯示它!另外:您應該通過編輯**更新**原始問題,而不是自己添加「虛擬」答案...... – 2010-09-15 16:46:28
請發佈您正在嘗試的代碼。 – 2010-09-15 15:31:57