TO bechhambobo
其实问题是这样的:
   假设一个触发器是针对表A变动而能使得表B也发生相应的变动。则在触发器体内一定是一些对表B进行的执行语句。
   我现在的问题是这些执行语句涉及到查询表A的记录数据,这样的话会产生“mutating”、
(变异)而发生错误。
   我现在没办法解决这个问题,因为我必须还要返回来查询表A里面其他的数据,然后结合表A里新增的数据(或删除)一起再做些动作。
   请问有什么想法和解决办法吗?
   非常感谢!!!!!

解决方案 »

  1.   

    create trigger a_tri
    before insert or update on a
    for each row
    declare
    cursor t_sor is
    select ... from a;
    begin
    for v_sor in t_sor loop
    ...
    end loop;
    update b set=... where id=:new.id;
    end;
    /
      

  2.   

    "我现在的问题是这些执行语句涉及到查询表A的记录数据,这样的话会产生mutating",是的,无论如何要避免针对A表的变动再去"查询A表",即不要再出现A表的名字,
    但可以用其它方法引用A表中的字段,如使用decode等.
      

  3.   

    TO BlueskyWide:"但可以用其它方法引用A表中的字段,如使用decode等"decode是怎么使用的?你能说详细点吗?我没接触过。其他的一些方法你帮我介绍一下好吗,谢谢!!!!