关于触发器的问题?

情况时这样的,现在我有这样个问题,  
我想在sql  server2000下建立这样的触发器  
 
表一:a表二:b  
表一中有这样的字段:mname,mmoney(int  not  null,int)  
表二中有这样的字段:gname,gf(int,int)  
我希望在表二上建立触发器,当在往表二中插入字段时  
对表一进行更新:将插入在表二记录中的mname=gname的mmoney的值  
自动加在表一的gf字段上作为更新后的值.这个触发器怎么建立。  
谢谢!!!  
---------------------------------------------------------------  
 
create  trigger    utg_test  
on  tableb  
for  insert,update  
as  
update  tablea  set  gf=(select  mmoney  from  tableb  where  tableb.mname=tablea.gname)  
go  
---------------------------------------------------------------  
 
CREATE  TRIGGER  tr_in  ON  [dbo].[B]    
FOR  INSERT    
AS  
Update  A  set  A.mmoney=A.mmoney+isnull((select  sum(gf)  from  inserted  M  where  M.gname=A.mname),0)    
 
---------------------------------------------------------------  
 
很好做呀!  
对B的INSERT做一个触发器.  
从INSERTED临时表中取得@gname,@gf(对应列的值)  
update  a  set  mmoney  =  mmoney  +  gf  where  mname  =  gname  
---------------------------------------------------------------  
 
好像都没有写对:  
CREATE  TRIGGER  tr_in  ON  [dbo].[B]    
FOR  INSERT    
AS  
Update  A    
set  mmoney=A.mmoney+M.gf  
from  inserted  M    
where  M.gname=A.mname  
 
 
 
---------------------------------------------------------------  
 
TO  CSDNM:  
I  think  your  trigger  have  some  troube.  
IF  not  use  sum,  There  must  be  some  error  when  Table  B  update  with  insert  from  a  subselect.  or  another  word,  when  B  update  use  as  the  following  your  trigger  can  not  get  right  result.  
 
insert  b(gname,gf)  (SELECT  1,3  union  select  1,5)  
---------------------------------------------------------------  
 
ok!  
 
CREATE  TRIGGER  tr_in  ON  [dbo].[B]    
FOR  INSERT    
AS  
Update  A    
set  mmoney=A.mmoney+M.gf  
from  (select  gname,sum(gf)  as  gf  from  inserted  group  by  gname)  M    
where  M.gname=A.mname  
 
 
你的触发器结果应该是对的,但是每次插入更新了整个A表,速度可能不能接受.  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值