这段时间遇到一个问题,程序里明明插入了一条记录,但在后边的一段Procedure中却查不到刚刚插入的记录,最后发现这个Procedure的定义中加入了PRAGMA AUTONOMOUS_TRANSACTION。 PRAGMA AUTONOMOUS_TRANSACTION中文翻译过来叫“自治事务”(翻译的还算好理解),对于定义成自治事务的Procedure,实际上相当于一段独立运行的程序段,这段...
这段时间遇到一个问题,程序里明明插入了一条记录,但在后边的一段Procedure中却查不到刚刚插入的记录,最后发现这个Procedure的定义中加入了PRAGMA AUTONOMOUS_TRANSACTION。 PRAGMA AUTONOMOUS_TRANSACTION中文翻译过来叫“自治事务”(翻译的还算好理解),对于定义成自治事务的Procedure,实际上相当于一段独立运行的程序段,这段...
4.AT程序必须以commit或rollback结尾,否则会产生Oracle错误ORA-06519:active autonomous_transaction detected and rolled back 在程序开发中,如果充分运用autonomous transaction的特性,一定能取得事半功倍的效果。
PRAGMA AUTONOMOUS_TRANSACTION; BEGIN Insert into Error_log values ( sysdate,error_msg); COMMIT; END; 下面我们来看一个例子,(win2000 advanced server + oracle8.1.6 , connect as scott) 建立一个表: create table msg (msg varchar2(120)); 首先,用普通的事务写个匿名PL/SQL块: declare cnt number ...
语法 在语句声明部分 declare ,加⼊下列语句即可 pragma autonomous_transaction ; 1.1事务图⽰ 2⽰例:错误⽇志 基础数据准备: --创建学⽣信息表 create table scott .stu_info ( id number (10) constraint pk_sut_info_id primary key, name varchar2 (30), sex varchar2 (2) ); --创建⽇...
pragma autonomous_transaction; 表示自由事务处理。 CREATE OR REPLACE TRIGGER temp_ais AFTER insert ON atest for each row DECLARE pragma autonomous_transaction; BEGIN execute immediate 'DROP TABLE AAA'; end; 1. 2. 3. 4. 5. 6. 7. 8. ...
Next, we insert another 8 rows using an anonymous block declared as an autonomous transaction, which contains a commit statement. 下一步,我们使用匿名的自治事务块插入另外8行数据,同时提交。 DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN FOR i IN 3 .. 10 LOOP INSERT INTO at_test (id, description...
Oracle中的PRAGMA AUTONOMOUS_TRANSACTION详解 1. 解释什么是Oracle中的PRAGMA AUTONOMOUS_TRANSACTION Oracle中的PRAGMA AUTONOMOUS_TRANSACTION是一个编译器指令,用于将一个PL/SQL块或例程(如过程、函数)标记为自治事务。自治事务是一个独立于其调用者(父事务)的事务,它可以独立地提交或回滚自己的更改,而不会影响到父事...
建立自由性交易, 使用名为autonomous_transaction的编译指示(编译命令,如, #include), 这个编译命令要放在declare里面. Delcare or replace procedure procedure_name(params, types) AS PRAGMA AUTONOMOUS_TRANSACTION; 当程序执行的时候,pl/sql 会把autonomous_transaction当成独立存在的区域来处理. ...
FOR EACH ROWdeclare PRAGMA AUTONOMOUS_TRANSACTION;BEGIN :new.afc212 :='1'; deletefromfc83whereafc001 = :new.afc001 and afa031= :new.afa031 and afc210= :new.afc210;commit;END TRI_FC83_INSERT; oracle在trigger自制事务,目的很简单,就是在插入数据的时候,先插入一条afc212(原值为0)的值为...