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

本文介绍如何在SQL Server中使用触发器结合游标实现跨表数据同步。当从On_Duty表中删除记录时,通过触发器与游标机制,能够确保删除的数据被准确地复制到On_Duty_Future及On_Duty_History1表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


SQL Server

场景:三张表 On_Duty,On_Duty_Future,On_Duty_History1

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

create trigger triForHiry 
on On_Duty 
for delete 
as

begin

declare YB CURSOR  /*声明游标*/
for 
	select ID,Base from deleted
	open YB
	
	declare @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 /*游标下移*/
	end
close YB
deallocate YB
end

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值