• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SQLServer中对所有的用户表生成触发器

mysql 搞代码 4年前 (2022-01-09) 23次浏览 已收录 0个评论

测试的时候比较重要,我们可以知道当前交易影响了哪些表 –用于记录 用户 在当前表上什么时候、做的什么操作:update、insert、delete create table TriggerRecord ( operdt datetime,–触发时间 opertp varchar(10),–操作类型:update、insert、delete ope

测试的时候比较重要,我们可以知道当前交易影响了哪些表

–用于记录用户在当前表上什么时候、做的什么操作:update、insert、delete
create table TriggerRecord
(
operdt datetime, –触发时间
opertp varchar(10), –操作类型:update、insert、delete
opertb varchar(50) –表名
)
–这个表于用保存生成触发器语句,在过程中循环执行
–因为Sqlserver不允许在一个批次同时执行多条create trigger语句
create table T(sqlTrigger varchar(500))
–循环执行存于表中触发器的存储过程
create proc loopExecTrigger
as
begin
declare @sql varchar(500)
declare cur cursor for select sqlTrigger from T
open cur
fetch cur into @sql
while @@fetch_status=0
begin
execute(@sql)
fetch cur into @sql
end
close cur
deallocate cur
delete T
end

–用于生成插入语句的触发器,并将触发器语句保存到表中
select ‘insert into T values(”create trigger T_’+name+’ on ‘+name+’ for insert as insert into TriggerRecord values(getdate(),””insert””,””’+name+””’);”)’ from sysobjects where type=’U’ and name not in(‘T’,’TriggerRecord’)
–将以上生成的语句拷贝出来执行

–用于生成更新语句的触发器,并将触发器语句保存到表中
select ‘insert into T values(”create trigger T_’+name+’_U on ‘+name+’ for update as insert into TriggerRecord values(getdate(),””update””,””’+name+””’);”)’ from sysobjects w本文来源gaodai$ma#com搞$代*码*网here type=’U’ and name not in(‘T’,’TriggerRecord’)
–将以上生成的语句拷贝出来执行

–用于生成删除语句的触发器,并将触发器语句保存到表中
select ‘insert into T values(”create trigger T_’+name+’_D on ‘+name+’ for delete as insert into TriggerRecord values(getdate(),””delete””,””’+name+””’);”)’ from sysobjects where type=’U’ and name not in(‘T’,’TriggerRecord’)
–将以上生成的语句拷贝出来执行

–执行通过上面语句生成的语句后,再执行存储生成触发器的存储过程
exec loopExecTrigger

生成删除全部以T开头的触发器的语句
select ‘drop trigger ‘+name+’;’ from sysobjects where type=’TR’ and name like ‘T_%’

冯立彬的博客


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SQLServer中对所有的用户表生成触发器

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址