mssql 触发器 php,MSSQL_Microsoft SQL Server的行式触发器概述,曾经以为SQL SERVER的触发器只能 - phpStudy...

本文介绍了SQL Server中的行式触发器,纠正了对于触发器只能触发单行的误解。实际上,inserted和deleted表可以存储多条记录。通过游标,可以遍历并处理这些记录。文中给出了一个示例,展示如何创建一个delete触发器,将删除的记录保存到另一张表中,以便于数据跟踪。
摘要由CSDN通过智能技术生成

Microsoft SQL Server的行式触发器概述

曾经以为SQL SERVER的触发器只能触发单行,也就是说如果一个delete触发器,如果同时删除多行时,只会对第一条记录触发,后来发现了不是人家SQL SERVER不支持,而是偶脑子笨没发现。

其实inserted和deleted两张内部表存放了所有要插入或要删除的记录,可以用cursor逐次访问里面的每条记录,下面是一个示例,该触发器将要删除的记录转移到另一张表中:

第一步,创建这两张表

create table table1([id] int primary key, [value] varchar(100))create table table2([id] int primary key, [value] varchar(100))

第二步,插入测试数据

declare @i intset @i = 1while @i <= 100begin insert into table1([id], [value]) values(@i, cast(@i as varchar)) set @i = @i + 1end

创建table1的delete触发器

create trigger tr_d_table1 on table1 for deleteasbegin declare @id int, @value varchar(100) declare cur_del cursor local forward_only for select [id], [value] from deleted open cur_del fetch next from cur_del into @id, @value while @@fetch_status = 0 begin insert into table2([id], [value]) values(@id, @value) fetch next from cur_del into @id, @value end close cur_del deallocate cur_del end

现在对table1执行delete语句,发现所有被删除的记录都记录在在table2中了

delete from table1

本文作者:相关阅读:

Oracle BLOOM过滤问题分析与解决

Javascript 浏览器事件小结

CSS元素的层叠与z-index设置

外部表在Oracle数据库中使用心得

JSP模板应用指南(上)

用缓冲技术提高JSP应用的性能和稳定性

用stack变量优化Java代码

关于CSS网页布局id与class的命名

影响Oracle中文显示的字符集分析

HTML5 CSS3新的WEB标准和浏览器支持

Asp备份与恢复SQL Server数据库

HTML5中div§ion&article之间的区别

Ajax获取页面被缓存的解决方案

帝国ECMS教程:上一篇下一篇自定义综合代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值