我想在這個問題上實現的是,如果我在我的表格中進行了任何更新/刪除/插入操作,它應該將該記錄插入表格中的1個日誌用途如何獲得在觸發器中執行的動作
我有1個表作爲測試。假設如果我在我的表測試中插入下面的行,它應該引發觸發器,在我的另一個表中插入一行是日誌
測試
Id | Name | Location
1 | Test | America
日誌
ID | updatetime | Action
----------------------------------------------------------
1 | 2017-04-06 16:51:18.190 | Insert
同樣,如果我刪除或更新任何行動下它應該分別刪除或更新
ID | updatetime | Action
----------------------------------------------------------
1 | 2017-04-06 16:51:18.190 | Insert
1 | 2017-04-06 16:51:18.190 | Delete
我創建了一個單觸發
create trigger abc
on test
after insert, update, delete
as
begin
declare @id int
select @id = i.id from inserted i
insert into log values (@id, GETDATE())
end
從上述觸發我能夠獲得ID和錄入,可是如何才能讓行動柱像已執行什麼動作如何實現這一點。任何人都可以有一個線索
你觸發了** **主要中的缺陷,你似乎認爲它會被稱爲**每行一次** - 這是**不是**的情況。觸發器將在每個語句**中觸發一次**,因此如果您的語句影響25行,您將觸發**觸發**一次,但是隨後插入的和/或刪除的僞表格將分別包含25個行。您的代碼在這25行中選擇哪一個? 'SELECT @id = i.id FROM Inserted i' - 這是非確定性的。你需要重寫你的觸發器來考慮這個問題! –