把我遇到的问题简化一下:
1、我需要在表A中插入或删除一条数据,完成后,统计A表中数据条数(COUNT)。
2、为此我建立了一个触发器。但这会造成数据库提示的“data is mutating,the trigger may not see it”的错误。
3、于是我采用了“自治事务”来解决这一问题。
4、通过“自治事务”我能让触发器运行起来。但我又因此遇到了另一问题:统计出的A表中的数据条数,是在插入或者删除数据之前的A表中的数据条数。
谁能给我个解决方法?Oracle数据库触发器自治事务

解决方案 »

  1.   

    。。因为你 insert的时候,就触发了触发器,,
    但此时是没有提交的,触发器就相当于另一个session了。
    所以  看到的  是 没有提交前的总数
      

  2.   

    你的思路不正确。
    新建一张临时表,用来存表A的记录条数。
    在表A建立插入和删除触发,触发器的代码是把表A的记录条数插入临时表。
    然后读取临时表的数据即可。
      

  3.   

     是说往A表中插入一条数据,临时表中的“记录条数”加1是吧?我本来是这样做的,但后来由于各种原因,我需要避开这样做,而是去直接count,所以才遇到这样的问题。