当前位置:   article > 正文

Oracle自治事务示例演示_oracle 事务自

oracle 事务自

自治事务

自治事务(Pragma autonomous_transaction):是PL/SQL块中的一个单独事务,与调用或触发自己的事务之间互不干扰,自己commitrollback不会影响其他事务,也不会被其他事务所影响。

通俗的讲,自治事务可以将程序块中(Procedure、Function、Package)的事务进行单独提交,而不会影响主事务(DML);主事务回滚时,不需要作回滚处理的操作; 事务提交和回滚时不会影响到主事务中的操作。

实现:

只需下列PL/SQL的声明部分加上PRAGMA AUTONOMOUS_TRANSACTION就可以了

示例:

主事务:

UPDATE emp SET job = '数据开发'WHEREempno = 7311;

执行完成后并不进行commit操作。

如上图,job值已发生改变,但我并没有执行提交或回滚的操作。

注意:若先执行主事务后,再执行存储过程,Oracle默认DDL操作会隐式提交主事务。可以先创建存储过程再执行主事务;

创建存储过程实现测试自治事务是否会影响到主事务。

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"> <span style="color:#770088">CREATE</span> <span style="color:#770088">OR</span> REPLACE PROCEDURE p_test
  2.  <span style="color:#770088">IS</span>
  3.         PRAGMA AUTONOMOUS_TRANSACTION;
  4.  <span style="color:#770088">BEGIN</span>
  5.   ROLLBACK;
  6.  END;</span></span>

如上所示,我在存储过程中添加了自治事务,且程序块中没有其他任何操作,只有回滚事务的操作。

接下来我们对存储过程进行调用;

call p_test();

验证:

如上图所示,在程序块中声明自治事务后,程序块中的commitrollback操作并不会影响到主事务(DML),只会影响到该程序块中本身的事务。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/509220
推荐阅读
相关标签
  

闽ICP备14008679号