| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 476 人关注过本帖
标题:请aei135老师进,一个触发器的问题。
只看楼主 加入收藏
arook
Rank: 1
等 级:新手上路
帖 子:45
专家分:7
注 册:2010-10-21
结帖率:94.12%
收藏
已结贴  问题点数:30 回复次数:7 
请aei135老师进,一个触发器的问题。
请问如何在保存单据之前执行触发器?
create     trigger wcmo
on [dbo].[ICStockBill]  
for insert,update                       
as
Declare @Ftrantype  int   --单据类别定义
Select  @Ftrantype=Ftrantype  from inserted   
if (@Ftrantype=28)      
begin      
update t2 set t2.fentryselfb0847=t4.fbillno  --(需要点软件的“保存“按钮才会执行更新?能否做到只要t2表有一有数据插入就更新?)   
from inserted as t1                 
inner join icstockbillentry as t2 on t2.finterid=t1.finterid                     
inner join icmo   as t3 on t3.finterid=t2.fsourceinterid                     
inner join seorder as t4 on t4.finterid=t3.forderinterid        
return
end  
搜索更多相关主题的帖子: 触发器 老师 
2010-11-25 10:22
qingshuiliu
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:17
帖 子:323
专家分:1538
注 册:2009-12-28
收藏
得分:0 
触发器本身就是只要有数据插入的话
就会更新的啊。
如果不能更新的话,是不是跟if (@Ftrantype=28) 有关系

2010-11-25 12:55
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:0 
t2表一有数据插入就更新?icstockbillentry 表是t2表,那ICStockBill是什么表了,没看明白
update t2 set t2.fentryselfb0847=t4.fbillno  --(需要点软件的“保存“按钮才会执行更新?能否做到只要t2表有一有数据插入就更新?)   
from inserted as t1                 
inner join icstockbillentry as t2 on t2.finterid=t1.finterid                     
inner join icmo   as t3 on t3.finterid=t2.fsourceinterid                     
inner join seorder as t4 on t4.finterid=t3.forderinterid        
这句也有问题,t2只是表icstockbillentry的别名,怎么能用update t2 set t2.fentryselfb0847=t4.fbillno呢,应该是update icstockbillentry set fentryselfb0847=t4.fbillno才对
2010-11-25 13:59
arook
Rank: 1
等 级:新手上路
帖 子:45
专家分:7
注 册:2010-10-21
收藏
得分:0 
回复 3楼 aei135
aei135老师,
    我重新整理了一下这个触发器,请看。情况也是和之前说的一样。需要点软件的保存“t2.fentryselfb0847”才会更新,而且不会更新在软件的界面,只更新在数据库表的字段。

create  trigger  wcmo
on [dbo].[icstockbillentry]
before  insert,update
as set nocount on
 
UPDATE  t2 set t2.fentryselfb0847=t4.fbillno
       from  icstockbillentry as t2      
        inner join inserted as t1 on t2.finterid=t1.finterid   
        inner join icmo     as t3 on t3.finterid=t2.fsourceinterid                     
        inner join seorder as t4 on t4.finterid=t3.forderinterid


业精于勤
2010-11-25 14:08
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:0 
上面所说的UPDATE语句还是不对啊,你这样写UPDATE语句肯定是错误的,而且触发器有before insert,update的说法吗?好象没有吧?
2010-11-25 15:30
arook
Rank: 1
等 级:新手上路
帖 子:45
专家分:7
注 册:2010-10-21
收藏
得分:0 
回复 5楼 aei135
不好意思,是for insert,update

请问update应该怎么写?

业精于勤
2010-11-25 15:54
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:30 
这样
UPDATE  icstockbillentry set fentryselfb0847=t4.fbillno
       from  icstockbillentry as t2      
        inner join inserted as t1 on t2.finterid=t1.finterid   
        inner join icmo     as t3 on t3.finterid=t2.fsourceinterid                     
        inner join seorder as t4 on t4.finterid=t3.forderinterid

2010-11-25 16:27
arook
Rank: 1
等 级:新手上路
帖 子:45
专家分:7
注 册:2010-10-21
收藏
得分:0 
回复 7楼 aei135
aei135老师,
        OK,搞定!

业精于勤
2010-11-25 17:35
快速回复:请aei135老师进,一个触发器的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038417 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved