| 订阅 | 在线投稿
分享
 
当前位置: 首页 >> 讲解Microsoft SQL Server的行式触发器 - 悦网 - wangchao.net.cn

讲解Microsoft SQL Server的行式触发器 - 悦网 - wangchao.net.cn

编辑來源: 简体版 繁體版 评论 发布时间
 

  曾经以为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

日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

李溪芮《极品家丁》片尾曲《你就是我最爱的宝宝》歌词

你就是我最爱的宝宝 - 李溪芮 (电视剧《极品家丁》片尾曲) 作词:常馨内 作曲:常馨内 你的眉 又鬼马的挑 你的嘴 又坏坏的笑 上一秒吵闹 下...

什么是脂肪粒?如何消除脸部脂肪粒?

什么是脂肪粒 在我们的脸上总会长一个个像脂肪的小颗粒,弄也弄不掉,而且颜色还是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒虽然也是由油脂...

如何防止墙纸老化?墙纸变旧变黄怎么办?

如何防止墙纸老化? (1)选择透气性好的墙纸 市场上墙纸的材质分无纺布的、木纤维的、PVC的、玻璃纤维基材的、布面的等,相对而言,PVC材质的墙纸最不透气...

鲜肌之谜非日本生产VS鲜肌之谜假日货是谣言

观点一:破日本销售量的“鲜肌之谜” 非日本生产 近一段时间,淘宝上架了一款名为“鲜肌之谜的” 鲑鱼卵巢美容液,号称是最近日本的一款推出的全新护肤品,产品本身所...

关于女人的经典语句

关于女人的经典语句1、【做一个独立的女人】 思想独立:有主见、有自己的人生观、价值观。有上进心,永远不放弃自己的理想,做一份自己喜爱的事业,拥有快乐和成就...

未来我们可以和性爱机器人结婚吗?

你想体验机器人性爱吗?你想和性爱机器人结婚吗?如果你想,机器人有拒绝你的权利吗? 近日,第二届“国际人类-机器人性爱研讨会”大会在伦敦金史密斯大学落下帷幕。而...

全球最变态的十个地方

10.土耳其地下洞穴城市 变态指数:★★☆☆☆ 这是土耳其卡帕多西亚的一个著名景点,传说是当年基督教徒们为了躲避战争而在此修建。里面曾住着20000人,...

曾经以为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

  免责声明:本文仅代表作者个人观点,与悦网无关。悦网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

© 2005- 悦网 版权所有