[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

小议Oracle 11g的自治事务(二)

作者: 杨廷琨,  出处:blog, 责任编辑: 王晓晨, 
2008-08-05 10:00
  Oracle 11g自治事务更像是在单独的会话中执行,它的事务状态不会影响当前的事务,它也不会看到当前事务没有提交的修改。

 小议Oracle 11g的自治事务(一  小议Oracle 11g的自治事务(四)

  小议Oracle 11g的自治事务(二)    小议Oracle 11g的自治事务(五)

小议Oracle 11g的自治事务(三)    小议Oracle 11g的自治事务(六)

   自治事务实现的功能是自治事务的提交或回滚不影响当前的事务。同时自治事务也是看不到当前会话所做的未提交的修改的。 

SQL> TRUNCATE TABLE T_AUTO_TRANS;

  表被截断。

SQL> CREATE OR REPLACE PROCEDURE P_TEST AS
  2 BEGIN
  3 INSERT INTO T_AUTO_TRANS VALUES (2, 'TEST');
  4 FOR I IN (SELECT COUNT(*) CNT FROM T_AUTO_TRANS) LOOP
  5 DBMS_OUTPUT.PUT_LINE('P_TEST:' || I.CNT);
  6 END LOOP;
  7 END;
  8 /

  过程已创建。 

SQL> CREATE OR REPLACE PROCEDURE P_TEST_AUTO AS
  2 PRAGMA AUTONOMOUS_TRANSACTION;
  3 BEGIN
  4 INSERT INTO T_AUTO_TRANS VALUES (2, 'TEST');
  5 FOR I IN (SELECT COUNT(*) CNT FROM T_AUTO_TRANS) LOOP
  6 DBMS_OUTPUT.PUT_LINE('P_TEST_AUTO:' || I.CNT);
  7 END LOOP;
  8 COMMIT;
  9 END;
  10 /

  过程已创建。

SQL> INSERT INTO T_AUTO_TRANS VALUES (1, 'TEST');

  已创建 1 行。 

SQL> SET SERVEROUT ON
  SQL> EXEC P_TEST
  P_TEST:2

  PL/SQL 过程已成功完成。

SQL> EXEC P_TEST_AUTO
  P_TEST_AUTO:1

  PL/SQL 过程已成功完成。

  可以看到,对于自治事务是看不到当前会话所作的未提交的修改的。

共2页。 1 2 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅