有两个数据库,名称 分别为adb,bdb. 都存在 表 xs_area表。
结构如下:AreaCode char(10)
AreaName nvarchar(40)
写了update触发器。 可是 因为 两个库的表都写了update触发器。 在更新一个的时候,触发了另外一个。第二个触发后,又更新了第一个。 请问详细应该如何写。
目前的写法如下:总是有问题。
在adb 上。if ( update(AreaName) and not update(AreaCode) )
begin update a set a.areaname = i.areaname
from bdb.dbo.xs_area a,inserted i
where a.AreaCode= i.AreaCode and a.AreaName<> i.AreaName
end在bdb上。if (update(AreaName) and not update(AreaCode) )
begin
update a set a.areaname = i.areaname
from adb.dbo.xs_area a,inserted i
where a.AreaCode= i.AreaCode and a.AreaName<> i.AreaName
end
-----------
已经都加了 and a.AreaName<> i.AreaName 条件了,就是 防止 第二次又调用触发器。
两个触发器用的都是 after update.现在系统是 不让更新数据。说是超出了范围了。请问:该如何写这个触发器?谢谢大家指教!
begin update a set a.areaname = i.areaname
from bdb.dbo.xs_area a,inserted i,deleted d
where a.AreaCode= i.AreaCode and i.AreaCode=d.AreaCode and d.AreaName<> i.AreaName
end在bdb上。if (update(AreaName) and not update(AreaCode) and exists(select 1 from inserted i,deleted d where i.AreaCode=d.AreaCode and i.AreaName<>d.AreaName) )
begin
update a set a.areaname = i.areaname
from adb.dbo.xs_area a,inserted i
where a.AreaCode= i.AreaCode and i.AreaCode=d.AreaCode and d.AreaName<> i.AreaName
end
解决了,真的很感激阿。哈 。结贴