我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle自治事务autonomous_transaction怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle自治事务autonomous_transaction怎么用

这篇文章主要为大家展示了“Oracle自治事务autonomous_transaction怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle自治事务autonomous_transaction怎么用”这篇文章吧。

范例
1. 过程中的使用:

非自治事務如下

create or replace procedure sfis1.nonautonomous_insert_goal

as

begin

    insert into t values('NONAUTONOMOUS INSERT','1','1');

    commit;

end;

自治事務如下

create or replace procedure sfis1.autonomous_insert_goal

as pragma autonomous_transaction;

begin

    insert into t values('AUTONOMOUS INSERT','1','1');

    commit;

end;

當執行如下(插入兩行):

begin

insert into t values ('AUTONOMOUS INSERT','1','1');

NONAUTONOMOUS_INSERT_GOAL;

rollback;

end;

當執行下面(只插入一行)

begin

insert into t values ('AUTONOMOUS INSERT','1','1');

AUTONOMOUS_INSERT_GOAL;

rollback;  end;

 2.trigger 中的使用:

 觸發器只commit該觸發的信息,觸發器之外的不會commit

create table emp

as

select * from scott.emp;

create table audit_tab

( username varchar2(30) default user,

timestamp date default sysdate,

msg varchar2(4000))

 
只有他的老板才能更新他的信息

create or replace trigger sfis1.emp_audit

before update on sfis1.emp for each row

declare

pragma autonomous_transaction;

l_cnt number;

begin

select count(*) into l_cnt from dual

where exists ( select null from emp where empno = :new.empno

start with mgr = ( select empno from emp where ename = user )

connect by prior empno = mgr );

 if ( l_cnt = 0 )

 then

 insert into audit_tab ( msg )values ('Attempt to update'|| :new.empno );

 commit;

 raise_application_error(-20001,'Access Denied');

 end if;

 end;

3.對对select查询语句的审计方法

create table sfis1.audit_trail

(username varchar2(30 byte), pk number,attribute varchar2(30 byte),

 Dataum varchar2(255 byte),timestamp  date)

查詢及記錄用視圖,當查詢含sal, comm, hiredate記錄時插入審計表

create or replace force view sfis1.emp_v

(empno, ename, job, mgr, sal, comm, hiredate, deptno)

as

   select empno, ename, job, mgr,

        audit_trail_pkg.record (empno, 'sal', sal) sal,

        audit_trail_pkg.record (empno, 'comm', comm) comm,

audit_trail_pkg.record (empno, 'hiredate', hiredate) hiredate,

deptno from   emp;

CREATE OR REPLACE package SFIS1.audit_trail_pkg

as

function record( p_pk in number,p_attr in varchar2,p_dataum in number ) return number;

function record( p_pk in number,p_attr in varchar2,p_dataum in varchar2 ) return varchar2;

function record( p_pk in number,p_attr in varchar2,p_dataum in date ) return date;

end;

create or replace package body sfis1.audit_trail_pkg

as

procedure log( p_pk in number,p_attr in varchar2,p_dataum in varchar2 )

as

pragma autonomous_transaction;

begin

    insert into audit_trail values( user, p_pk, p_attr, p_dataum, sysdate );

    commit;

end;

function record( p_pk in number,p_attr in varchar2,p_dataum in number ) return number

is

begin

    log( p_pk, p_attr, p_dataum );

    return p_dataum;

end;

function record( p_pk in number,p_attr in varchar2,p_dataum in varchar2 ) return varchar2

is

begin

    log( p_pk, p_attr, p_dataum );

    return p_dataum;

end;

function record( p_pk in number,p_attr in varchar2,p_dataum in date ) return date

is

begin

    log( p_pk, p_attr,to_char(p_dataum,'dd.mon.yyyy hh34:mi:ss') );

    return p_dataum;

end;

end;

 
结束自治事务:
为了结束自治事务,必须发出一个完成的COMMIT或ROLLBACK,或执行DDL(隐含COMMIT)。當自主事務做出SET TRANSACTION或SAVEPOINT時,自主事務將自動開始。

以上是“Oracle自治事务autonomous_transaction怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle自治事务autonomous_transaction怎么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle事务怎么认定

oracle 中的事务认定依据包括:事务边界(begin transaction、commit、rollback)、原子性(全部成功或全部失败)、一致性(保持数据完整性)、隔离性(免受其他事务影响)、持久性(提交后永久保存更改)。Oracl
oracle事务怎么认定
2024-05-21

oracle事务怎么开启

在 oracle 中开启事务需要执行 "begin;" 语句,开启事务后所有修改暂时存储在内存中,直到提交或回滚。事务生命周期包括开启、提交和回滚阶段。控制事务的额外命令包括提交事务(commit)、回滚事务(rollback)和创建保存点
oracle事务怎么开启
2024-05-21

Java中怎么利用Serverless提高微服务治理效率

Java中怎么利用Serverless提高微服务治理效率,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。微服务治理面临的挑战在业务初期,因人手有限,想要快速开发并
2023-06-15

oracle事务超时时间怎么设置

在Oracle数据库中,事务超时时间可以通过设置以下两个参数来进行控制:DISTRIBUTED_LOCK_TIMEOUT:这个参数控制了分布式事务的锁等待超时时间,单位是秒。可以通过以下语句来设置:ALTER SYSTEM SET DIS
oracle事务超时时间怎么设置
2024-04-20

oracle自带split函数怎么使用

Oracle并没有内置的split函数,但可以使用其他方法来实现类似功能。比如可以使用REGEXP_SUBSTR函数来实现类似split的功能。示例如下:SELECT REGEXP_SUBSTR('apple,banana,or
oracle自带split函数怎么使用
2024-04-09

编程热搜

目录