触发器不能commit;你查看相关书籍吧

解决方案 »

  1.   

    你调用insert或update语句后(执行完触发器)提交不就行了
      

  2.   

    触发器不能commit,的确是这样
    数据会自动提交!
      

  3.   

    如果非要在trigge里面做commit
    保证操作失败也在数据库中保留数据
    则请使用 pragmaPRAGMA AUTONOMOUS_TRANSACTION;
    你在这里之前插入源表
    然后在下面这块代码里面处理远程表
    失败就回退
    但回退不影响前面的源表的操作,难道有什么问题?如下,把匿名pl/sql块换做triggerSQL> select * from test1;A B
    ---------- --------------------
    1 1
    3 3
    2 2SQL> 
    SQL> CREATE or replace PROCEDURE insert_test 
    2 as
    3 PRAGMA AUTONOMOUS_TRANSACTION;
    4 BEGIN
    5 insert into test1 values(6,6);
    6 rollback;
    7 END;
    8 /过程已创建。SQL> begin
    2 insert into test1 values(5,5);
    3 insert_test;
    4 commit;
    5 end;
    6 /PL/SQL 过程已成功完成。SQL> select * from test1;A B
    ---------- --------------------
    1 1
    3 3
    2 2
    5 5SQL>
      

  4.   

    触发器中不用COMMIT,会自动提交