Office中国论坛/Access中国论坛

标题: 关于触发器的问题! [打印本页]

作者: 徐阿鹏    时间: 2005-5-20 08:58
标题: 关于触发器的问题!
关于触发器的问题!



单号      采购成本        其他成本        调拨成本       对应单号



cg001    5000               100  



db001    5000               100                   50              cg001



db002    5000               100                   50              db001





想在采购成本、其他成本、调拨成本发生变化时,同步更新对应单号的数据。



写了触发器如下:



ALTER TRIGGER 核算_库存成本表_修改调拨成本

ON dbo.核算_库存成本表

FOR UPDATE

AS

declare @采购成本 money

declare @其他成本 money

declare @调拨成本 money



set  @采购成本 =(select  采购成本  from inserted)

set @其他成本=(select 其他成本 from inserted)

set @调拨成本=(select 调拨成本 from inserted)



IF UPDATE (采购成本)or UPDATE(其他成本)or UPDATE(调拨成本)



begin

declare @单号 nvarchar(50)

set @单号=(select 单号 from inserted)

UPDATE dbo.核算_库存成本表

SET 采购成本 = @采购成本, 其他成本 = @其他成本, 调拨成本 = @调拨成本 WHERE (关联单号 = @单号)



end





这个触发器的问题是:只能触发一次,即cg001的成本发生变化时只能更新db001的数据,不能更新db001关联的db002的数据。可是如果开的递归触发的话就报错:超出了32层!



请教高手,这样的触发器该怎么写?谢谢



或者请教表的设计有没有什么其他的思路!
作者: 徐阿鹏    时间: 2005-5-20 19:25
自己解决了
作者: yodong    时间: 2005-5-21 19:26
请问你是如何解决的?
作者: 徐阿鹏    时间: 2005-5-24 02:17
加了个判断语句
作者: yodong    时间: 2005-5-25 20:17
是否可以贴代码出来呀,让大家学习一下.




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3