我希望触发一个触发器,但我不确定如何获取导致触发的数据。
我有一个简单的 table 。
FooId INT PK NOT NULL IDENTITY
Name VARCHAR(100) NOT NULL
我希望有一个触发器,以便当发生更新、插入或删除时,我会执行以下操作。
伪代码
IF INSERT
Print 'Insert' & Name
ELSE IF UPDATE
Print 'Update' & FooId & Name
ELSE IF DELETE
Print 'Delete' & FooId & Name
现在,我知道如何为表创建触发器。 我不知道该怎么做是根据触发器类型找出值。
有人可以帮忙吗?
编辑:不确定是否有帮助,但数据库是 Sql Server 2008
最佳答案
伪表“inserted”包含新数据,“deleted”表包含旧数据。
你可以做类似的事情
create trigger mytrigger on mytable for insert, update, delete
as
if ( select count(*) from inserted ) > 0
-- insert or update
select FooId, Name from inserted
else
-- delete
select FooId, Name from deleted
为了澄清其他人发表的所有评论,在插入时,inserted 表包含数据,deleted 为空。删除时,情况相反。更新时,删除和插入包含任何更新行的“之前”和“之后”副本。
关于sql - 需要一些有关 Sql Server 和简单触发器的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/937468/