关于触发器的问题?
2004-11-17 15:23
411 查看
情况时这样的,现在我有这样个问题,
我想在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表,速度可能不能接受.
我想在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表,速度可能不能接受.
相关文章推荐
- Nokia 60的播放Tone声音被按键中断问题
- Adobe正式发布Acrobat 7
- 天依旧是这么灰蒙蒙的
- Adobe正式发布Acrobat 7
- java新闻:新一代Java技术即将出现(z)
- 给DBGrid添加鼠标滚动事件
- 应用Rational 工具简化基于J2EE的项目
- SQL优化
- 我被Build撞了一下腰
- Red Hat下WEB服务器的配置
- 综合型教育网BBS网站安全浅议 以YTHT为例
- Google送给中国博客的礼物,中文版Blogger.com
- 应用程序域
- Google送给中国博客的礼物,中文版Blogger.com
- JDO之前世今生
- 类库
- 兴奋而行
- 测试工作流程图
- Nokia 60的Image.createImage死机问题
- vc使用script控件执行javascript函数,并得到javascript返回值