首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

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

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

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

热点排行