讲解MicrosoftSQLServer的行式触发器

讲解MicrosoftSQLServer的行式触发器,第1张

讲解MicrosoftSQLServer的行式触发器,第2张

我以前认为SQL SERVER的触发器只能触发单行,也就是说如果一个delete触发器同时删除多行,只会触发第一条记录。后来发现不是别人的SQL SERVER不支持,是我傻,没发现。
实际上,inserted和deleted两个内部表存储了所有要插入或删除的记录。你可以用光标逐个访问其中的每一条记录。下面举个例子,触发器把要删除的记录转移到另一个表:
第一步,创建这两个表
创建table1 ([id] int主键,[value] varchar (100))创建table2 ([id] int主键,[value] varchar (100)]
第二步,插入测试数据
declare @ iintset @ I = 1 while @ I创建table1的删除触发器
创建table上的触发器tr _ d _ table1 @ 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])value(@ id,@ value)fetch next from cur _ del into @ id,@ valueend close cur _ del dealocate cur _ del end
现在对table1执行delete语句,发现所有删除的记录都记录在table 2中

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 讲解MicrosoftSQLServer的行式触发器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情