判断 SQLServer 触发器类型,支持多行

本文介绍了一个SQL触发器的具体实现案例,该触发器用于监控[dbo].[OpTypeLog]表上的INSERT、UPDATE和DELETE操作,并记录这些操作到一个名为[log]的表中。通过定义不同的游标和条件判断,确保每次数据库变动都能被准确记录。

直接上代码吧:

 1 ALTER TRIGGER [dbo].[tgr_forOpType]
 2 ON [dbo].[OpTypeLog]
 3 FOR  INSERT, UPDATE, DELETE 
 4 AS
 5 begin
 6 declare @id int
 7 declare @tableName varchar(50)
 8 set @tableName = 'TableName'
 9 declare @opType varchar(50)
10 --insert--------------------------------------------------------
11     if exists(select * from inserted) and not exists (select * from deleted)
12     begin
13         set @opType = 'insert'
14         declare cur cursor
15         for select * from inserted
16         open cur
17         fetch next from cur
18         --into @id
19         while @@fetch_status = 0
20         begin
21             insert into [log](OpType,TableName) values (@opType,@tableName)
22             fetch cur --into @id
23         end
24         close cur
25         deallocate cur
26     end
27 --delete--------------------------------------------------------
28 if exists(select * from deleted) and not exists (select * from inserted)
29     begin
30         set @opType = 'delete'
31         declare cur cursor
32         for select * from deleted
33         open cur
34         fetch next from cur
35         --into @id
36         while @@fetch_status = 0
37         begin
38             insert into [log](OpType,TableName) values (@opType,@tableName)
39             fetch cur --into @id
40         end
41         close cur
42         deallocate cur
43     end
44 --update--------------------------------------------------------
45 if exists(select * from deleted) and exists (select * from inserted)
46     begin
47         set @opType = 'update'
48         declare cur cursor
49         for select * from deleted
50         open cur
51         fetch next from cur
52         --into @id
53         while @@fetch_status = 0
54         begin
55             insert into [log](OpType,TableName) values (@opType,@tableName)
56             fetch cur --into @id
57         end
58         close cur
59         deallocate cur
60     end
61 end

 

转载于:https://www.cnblogs.com/shungdawei/archive/2012/09/05/2671943.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值