有两个表,表A有字段 公司ID(主键),公司名称,公司负责人,三个字段
          表B有字段  公司ID,公司负责人,项目名称...
  要求:更新表A的公司负责人字段时,同时更新表B的公司负责人字段.
       更新表B的公司负责人字段时,同时更新表A的公司负责人字段.
 按一般的写法,写两个触发器的话,会引起死循环,求解决方法..

解决方案 »

  1.   

    在A,B表中都加个标记字段。用它来判断是人为的更改还是触发器所触发的更改操作。。
    例如加个type字段,默认值为1。1为人为的,0为触发器更改。
    每次更改时判断type字段的值是不是1就行了。触发器更改对应表中数据同时,将type字段的值改为0。
      

  2.   

    pt1314917(背着灵魂漫步) 
    =================
    按照你这种方法,就只能在只更新数据一次的情况下实现啊,如果想再次更新的话,不会执行
     当更改表A的公司负责人时,触发器1  update 表B  set 表B.公司负责人=inserted.公司负责人,表B.type=0 from  inserted where 表B.ID=inserted.id and 表B.TYPE=1
           表B的type=0,
     同样在更改表B的公司负责人时, 触发器2,update 表A  set 表A.公司负责人=inserted.公司负责人,表A.type=0 from  inserted where 表A.ID=inserted.id and 表A.TYPE=1
    结果是表A和表B的type都变为0
    下次我在更新这条数据时,触发器不再执行.
      

  3.   

    http://blog.csdn.net/zjcxc/archive/2007/08/05/1726711.aspx
    ----
    这边看一下你应该可以解决的
      

  4.   

    骇不会手工更新负责人的时候,顺手把TYPE更新为1么。除此之外,还可以通过数据库设置,不允许触发器递归。
      

  5.   

    sp_dboption  recursive triggers 
    sp_configure  nested triggers 
    试下这两个开头,关于直接递归和间接递归的启用与禁用