日期:2014-05-17  浏览次数:20476 次

触发器 多条数据更新时 如何处理
现有触发器 插入 更新 A表 如果B表 有相关数据则更新,负责就插入数据

这个触发器是没问题的,可以正常运行。但如果我要批量插入 或者 批量更新时候 就出问题了。

有人说用游标可以做这个 但 做个简单测试 

--
-- Declare @ID  int
-- 
--
-- Declare myCur CURSOR FOR
-- select ID from deleted
-- open myCur
--
-- fetch next from myCur into @ID
--
-- while @@fetch_status=0

BEGIN

insert into T2(ID,H,iID) 
select i.ID,i.H,i.ID
from inserted i

--fetch next from myCur into @ID

End

-- Close myCur
-- DEALLOCATE myCur
     --Insert statements for trigger here


这个是 T1 数据变化 向T2 插入数据,用上游标 反而执行不了。 不知道改如何解决,现在不用游标却可以。

但我说的那个和这个 相似 却不能

------解决方案--------------------
这个Trigger逻辑上是有问题的


  Declare @GoodsID  nvarchar(100)        Declare @ReserID nvarchar(100)         set @ReserID=(select D.resellerId From inserted D)         Set @GoodsID=(Select count(*) From [Goods] where ID in (select D.GoodsID From inserted D) and resellerId=@ReserID)  

如果影响的条数为多条记录,那么可能就无法返回正确的结果了。