读书人

触发器 多条数据更新时 如何避免

发布时间: 2013-04-21 21:18:07 作者: rapoo

触发器 多条数据更新时 如何处理
现有触发器 插入 更新 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)

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

读书人网 >SQL Server

热点推荐