sql server触发器批量更新只对第一条记录起作用是怎么回事
写了一个SQL SERVER触发器,对表中的记录进行单行修改没有任何问题,但是批量更新的时候发现触发器只对第一条记录进行了触发,其它行记录均没有进行更改是何原因?
ALTER trigger [tr2_SEOutStockEntry_Qty21] on [dbo].[SEOutStockEntry] --with encryption
for update as
begin
if update (fcommitqty)
begin
declare @IsBase int
select @IsBase=t3.FBase
from inserted t0
inner join SEOutStockEntry t1 on t0.finterid = t1.finterid and t0.fentryid = t1.fentryid
inner join SEOutStock t2 on t1.finterid = t2.finterid
inner join tb_seorderentry2 t3 on t1.FSourceEntryID = t3.FEntryID
where t2.ftrantype = 83 and t1.fsourcetrantype = 220090331
update t1 set t1.FEntrySelfS0238 =
case when isnull(t1.fCommitQty,0) <= 0 then ''
else
case when isnull(t1.fCommitQty,0) < t1.fQty then '部分'
else '全部'
end
end
from inserted t0
inner join SEOutStockEntry t1 on t0.finterid = t1.finterid and t0.fentryid = t1.fentryid
inner join SEOutStock t2 on t1.finterid = t2.finterid
--inner join tb_seorder t3 on t3.FBillNo = t1.FSourceBillNo
inner join tb_seorderentry2 t4 on t4.FEntryID = t1.FSourceEntryID and t4.FBase = @IsBase
where t2.ftrantype = 83 and t1.fsourcetrantype = 220090331
-- 2009-06-03 此处需要根据实际的单据自定义调整列名 FHeadSelfS0242
-- select ffieldname from ictemplate where fid = 's02' and fcaption = '执行状态:'
update t1 set t1.FHeadSelfS0242 =
case when t2.fOverRowCount = t2.fRowCount then '全部'
else case when t2.fSumCommitQty > 0 then '部分' else '' end end
from inserted t0
inner join SEOutStock t1 on t0.finterid = t1.finterid
inner join (
select fInterID,fsourcetrantype,count(1) fRowCount,sum(fCommitQty) fSumCommitQty,
--FSourceBillNo,
sum(case when fCommitQty >= fQty then 1 else 0 end) fOverRowCount
from SEOutStockEntry group by fInterID,fsourcetrantype--,FSourceBillNo
) t2 on t