Office中国论坛/Access中国论坛

标题: 已解决。如何写这个update类型的触发器? [打印本页]

作者: wu8313    时间: 2008-8-19 17:53
标题: 已解决。如何写这个update类型的触发器?
已知:
     t1 表中的 '李四' 对应的autoid=4,
     t2 表中的 '赵四' 对应的id=4 .

要求:
       当 t1 表中的 '李四' 被修改为 '钱五'
那么,  t2 表中的 '赵四' 也被修改为 '钱五'
也就是说 两表中只有相同id的行同步更新,使得 name 列值保持一致。

应该如何写这个触发器?谢谢。

附件为 :我在上文中提到的数据库的 mdf 和 ldf 文件。包含 t1表 和 t2表

[ 本帖最后由 wu8313 于 2008-8-21 09:51 编辑 ]
作者: laomao    时间: 2008-8-21 00:05
为什么要这样做?去掉t2的name列,t2用id外连接t1就可以了
作者: wu8313    时间: 2008-8-21 09:45
原帖由 laomao 于 2008-8-21 00:05 发表
为什么要这样做?去掉t2的name列,t2用id外连接t1就可以了


t2表包含name列是必须的,这个无法省略。

请老猫查看库中的关系图。我建立了autoid 和 id 的连接 ,是级联删除,而没有级联更新(即使设置了,也无法达到级联更新的效果)。

[ 本帖最后由 wu8313 于 2008-8-21 09:51 编辑 ]
作者: wu8313    时间: 2008-8-21 09:49
问题已经解决。

在t1中建立触发器如下:

create   trigger   update_t2
  on   t1   
  for   update   
  as   
  begin   
      if   update(name)   
              update   t2   set   name   =   t1.name   from   t2,inserted   t1   where   t2.id   =   t1.autoid   
   
  end




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3