使用触发器一次性修改多条记录

来源:互联网 发布:北京火锅知乎 编辑:程序博客网 时间:2024/04/30 05:45

要注意:触发器的触发是操作,而不是针对行记录,这也是为什么我一次删除、新增很多数据时结果只有一条记录被触发出来,在面对一条sql语句删除了、新增了多条记录时需要使用游标进行操作


SQL Server

场景:三张表 On_Duty,On_Duty_Future,On_Duty_History1

在On_Duty中删除一条记录,就把数据插入到另外两张表中,数据库语句如下:

create trigger triForHiry on On_Duty for delete asbegindeclare YB CURSOR  /*声明游标*/for select ID,Base from deletedopen YBdeclare @ID int,@Base varchar(20)fetch next from YB into @ID,@Base/*读取第一条数据*/while(@@fetch_status=0) /*表示成功执行fetch语句*/begin/* 将On_Duty_Future中相应的值班信息存入On_Duty*/insert into On_Duty_Future values(@ID,@Base,'','','','','','')insert into On_Duty_History1 values(@ID,@Base,'','','','','','')fetch next from YB into @ID,@Base /*游标下移*/endclose YBdeallocate YBend

最后结果就是执行一条删除多条数据的sql语句,在其他两张表中新增了删除数量的数据。


0 0