首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 一个触发器的问题 [已结贴,结贴人:kseawolfk]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-09 20:25:21 楼主
    有一个表teacher结构如下
    tid  tname
    1    abc
    2    bcd
    3    efg
    4    klm
    另有一个表结构course如下
    tid  tname  ....
    2    null
    3    null
    2    null
    4    null
    现在要把course的tname值更改成和teacher表中相关的值。例如
    tid  tname  ....
    2    bcd
    3    efg
    2    bcd
    4    klm
    请问该怎么写sql语句?另外还需要写一个触发器,保证course的tid

    更新时tname也要更新,请问如下的触发器有什么错?
    create trigger t1 on course
    for update
    as
    update course set tname=(select tname from teacher inner

    join inserted on teacher.tid=inserted.tid where

    course.tid=teacher.tid)
    结果会把除了要更新的行外记录里的tname都变成null。请高手指点

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-09 20:46:111楼 得分:20
    SQL code
    update t2 set tname=t1.Name from teacher t1,course t2 where t1.tid=t2.tid --------- create trigger tr_course on course for update as if update(tid) begin update t1 from course t1 join teacher t2 on t1.tid=t2.tid where exists(select 1 from inserted where tid=t1.tid) end
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-09 21:21:472楼 得分:0
    非常感谢中国风的回答,不过问题是我只需要更新course表当中的tname属性。
    create trigger tr_course on course
    for update
    as
    if update(tid)
    begin
    update t1  --  这个地方好像要改update t1 set tname=....不知道该怎么写了。。。。
    from
    course t1 join teacher t2 on t1.tid=t2.tid
    where
    exists(select 1 from inserted where tid=t1.tid)
    end
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-09 22:09:123楼 得分:0
    谢谢roy_88中国风,问题已经解决。update t1 set tname=t2.tname 即可
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved