设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1397|回复: 4
打印 上一主题 下一主题

关于触发器的问题!

[复制链接]
跳转到指定楼层
1#
发表于 2005-5-20 08:58:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于触发器的问题!



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



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层!



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



或者请教表的设计有没有什么其他的思路!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2005-5-20 19:25:00 | 只看该作者
自己解决了
3#
发表于 2005-5-21 19:26:00 | 只看该作者
请问你是如何解决的?
4#
 楼主| 发表于 2005-5-24 02:17:00 | 只看该作者
加了个判断语句
5#
发表于 2005-5-25 20:17:00 | 只看该作者
是否可以贴代码出来呀,让大家学习一下.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-22 04:00 , Processed in 0.082147 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表