create TRIGGER [updatetest] ON [dbo].[TEST]
FOR INSERT, UPDATE, DELETE
AS
begin
DECLARE
@IsInsert bit,
@IsUpdate bit,
@IsDelete bit
IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
SET @IsInsert = 1
ELSE
SET @IsInsert = 0
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
SET @IsUpdate = 1
ELSE
SET @IsUpdate = 0
IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
SET @IsDelete = 1
ELSE
SET @IsDelete = 0
if (@IsUpdate=1)
PRINT 'updated '
if (@IsInsert=1)
PRINT 'insert '
if (@IsDelete=1)
PRINT 'delete '
end
inserted、deleted: 
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表

本文介绍了一个SQL触发器的实现方式,该触发器可以检测到INSERT(插入)、UPDATE(更新)和DELETE(删除)操作,并通过打印消息来确认发生了哪种操作。触发器利用了SQL中提供的inserted和deleted两个特殊表来判断具体的数据库操作类型。
5014

被折叠的 条评论
为什么被折叠?



