为什么批量删除记录时触发器只执行最后一条
有两个表a和b
当在表a上执行delete from a
实际删除了3条记录
触发器只更新了表b的最后一条
示例:
--创建测试环境
create table a
(
id int primary key,
name varchar(20)
)
declare @sql nvarchar(200)
set @sql=N' insert a select 2,''BBBBBB'''+
N' insert a select 3,''CCCCCC'''+
N' insert a select 4,''DDDDDD'''
--select @sql
exec(@sql)
create table b
(
id int primary key,
sex varchar(10)
)
go
insert into b
select 1,'A'
union all select 2,'A'
union all select 3,'A'
union all select 4,'A'
--创建触发器
create trigger a_to_b
on a
for delete
as
declare @iid int
select @iid= id from deleted
update b set Sex='d'
where id=@iid
go
--执行以下语句
delete from a
--查询结果
select * from a
select * from b
--删除测试环境
drop table a
drop table b