关于delete删除某表中某些记录的原理问题
请教delete删除某表中某些记录的原理是怎样的,是每条记录挨个删除还是以某中方式批量执行
下面的现象触发了上面的问题,请做出解释
有两张表
国家表State
1 中国 China
2 美国 America
3 英国 England
省表Province
1 北京 BeiJing 1
2 重庆 ChongQing 1
3 四川 SiChuan 1
4 纽约 NewYork 2
5 伦敦 London 3
--为Province创建delete触发器,当删除某个省后,重新排列Province表的主键编号
if exists(select * from sysobjects where type='tr' and name='Province_UpdatePRID_Del')
drop trigger Province_UpdatePRID_Del
go
create trigger Province_UpdatePRID_Del
on Province
for delete
as
declare @PRID int
select @PRID=PRID from deleted
declare @tempID int
set @tempID=@PRID+1
while @tempID<=((select count(*) from Province)+1)
begin
update Province set PRID=@tempID-1 where PRID=@tempID
set @tempID=@tempId+1
end
执行
delete Province where STID=2后,得到理想结果
1
北京 BeiJing 1 2
重庆 ChongQing 1 3
四川 SiChuan 1 4
伦敦 London 3 3
然而当执行
delete Province where STID=1时
得到结果如下
4 伦敦 London 3
请问为什么????
请教解决办法