The PL/SQL block of a trigger cannot contain transaction control SQL statements (COMMIT, ROLLBACK, SAVEPOINT, and SET CONSTRAINT) if the block is executed within the same transaction.

解决方案 »

  1.   

    没有自动提交,触发器的改变是可以rollback的。
      

  2.   

    触发器中不能使用commit,rollback,savepoint等控制语句,它调用的函数也不能使用控制语句,触发器中不能使用 LONG ,LONG RAW 类型.
      

  3.   

    那我在触发器中写表记录怎么才能完成提交呢比如我要在表a写记录的时候,建立在这表A 上的触发器写表B记录。写表B 的记录是什么commit呢,
    是等待写表A记录提交的时候实现吗  如果是这样那before ,after ,instead of 有什么意义呢
      

  4.   

    可以在过程中进行提交,触发器中不可以进行commit和rollback。
      

  5.   

    在表a写记录的时候,建立在这表A 上的触发器写表B记录。
    当写表A记录提交的时候实现写表B 记录的提交。
    也就是写表A记录的before ,after ,inster 那一时刻触发B表记录写入,这时A表和B表有相同写入记录。如果commit,则A表B表都commit;反之,rollback,则A表、B表也rollback。
      

  6.   

    另外问一下,如果insert 表A 成功,但insert 表B 出现exception呢?