我想在这个问题上实现的是,如果我在我的表格中进行了任何更新/删除/插入操作,它应该将该记录插入表格中的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' - 这是非确定性的。你需要重写你的触发器来考虑这个问题! –