Autonomous transactions are useful for implementing actions that need to be performed independently, regardless of whether the calling transaction commits or rolls back, such as transaction logging and retry counters.只能使用自治事务吗?还有没有其它办法?

解决方案 »

  1.   


    只能使用自治事务
    ------------------------------------------
    oracle不存在嵌套事务这个说法,
    而且实际并不可行
      

  2.   

    savepoint is good.
    eg:
    SELECT * FROM EMP WHERE ENAME = ‘FAN’;
    INSERTINTO EMP(EMPNO,ENAME,SAL) VALUES(9000,’LIU’,1250);
    SAVEPOINT INSERT_POINT;
    INSERT INTO EMP(EMPNO,ENAME,SAL) VALUES(9001,’FU’,1300);
    ROLLBACK TO INSER_POINT;
    COMMIT;
      

  3.   

    savepoint这个方法比较好,楼上的兄弟,如果在这里还有 insert into student(..)values(..),与emp交叉插入数据,现在只想在任何时候保存更新到emp中的数据,而student中的数据需要回滚,是不是就只能多事务了。
      

  4.   

    to 蛐蛐:其实我也只是一个初学者,刚才看了一下书,查了一下有关于多事务和自治事务的内容。感觉你说的那个情况,要是使用savepoint确实不行。但是感觉起来要是使用多事务的处理方法也会很麻烦。也许正如hevin说的“这个要求有点高,为什么不在程序中想办法实现?”,呵呵。
    但是至于使用自治事务来处理??恐怕也不行----只是个人想法。欢迎大家就此讨论。