个人使用示例:

CREATE OR REPLACE PROCEDURE logs(p_remark VARCHAR2,
p_log CLOB) AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
--数据操作
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;

自治事务是由调用程序启动的独立事务。自治事务中SQL命令的提交或回滚对调用程序的任何事务中的提交或回滚都没有影响。调用程序中的提交或回滚对自治事务中SQL命令的提交或回滚也没有影响。

通过在SPL块的声明部分中指定以下指令,可将SPL程序声明为自治事务:

   PRAGMA AUTONOMOUS_TRANSACTION;

以下SPL程序可包含 PRAGMA AUTONOMOUS_TRANSACTION:

  • 独立的存储过程和函数。
  • 匿名块。
  • 包中声明为子程序的存储过程和函数以及其他调用存储过程、函数和匿名块。
  • 触发器。
  • 对象类型方法。

下面是与自治事务有关的问题和限制:

  • 每个自治事务只要在进行中,就会消耗一个连接槽。在某些情况下,这可能意味着应增大postgresql.conf文件中的max_connections参数。
  • 在大多数方面,自治事务的行为就像是一个完全独立的会话,但GUC(即通过SET建立的设置)是一个有意制造的例外。自治事务吸收周围的值,并可以将它们提交的值传播到外部事务。
  • 自治事务可以嵌套,但在单个会话中自治事务的嵌套级别限制为16级。
  • 自治事务中不支持并行查询。
  • 自治事务的PolarDB-O实现与Oracle数据库不完全兼容,因为如果SPL块末尾有未提交的事务,则PolarDB-O自治事务不会产生错误。

资料来源:PRAGMA AUTONOMOUS_TRANSACTION_事务控制_开发存储过程_开发指南_PolarDB-O 云原生数据库 - 阿里云 (aliyun.com)

ORACLE PRAGMA AUTONOMOUS_TRANSACTION 自治事务 单独提交某一段操作的更多相关文章

  1. Oracle与SQL自治事务

    自治事务 自治事务是独立的事务操作,如果考虑到事务回滚,必须单独写成一个触发器来完成, 一个事务A在另一个事务B内被调用,那个事务A是自治事务,自治事务A执行过程中会脱离其session内未执行完毕的 ...

  2. ORACLE触发器的自治事务的注意事项

    直接上代码: Create OR replace Trigger TR_ROBXMX_CLDJBHHX After INSERT OR UPDATE OR DELETE ON ROBXMX1 --要监 ...

  3. 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍

    AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...

  4. (转)关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍

    AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...

  5. Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题

    // 触发器 create or replace trigger tr_sync_BD_MARBASCLASS after INSERT or UPDATE on BD_MARBASCLASS for ...

  6. oracle自治事务(PRAGMA AUTONOMOUS_TRANSACTION)

    这段时间遇到一个问题,程序里明明插入了一条记录,但在后边的一段Procedure中却查不到刚刚插入的记录,最后发现这个Procedure的定义中加入了PRAGMA AUTONOMOUS_TRANSAC ...

  7. PRAGMA AUTONOMOUS_TRANSACTION

    转自 http://blog.csdn.net/pan_tian/article/details/7675800 这段时间遇到一个问题,程序里明明插入了一条记录,但在后边的一段Procedure中却查 ...

  8. [转]了解oracle自治事务

    http://blog.csdn.net/indexman/article/details/7799862 1.什么是Oracle自治事务 在官方文档中,是这样的定义的“Autonomous tran ...

  9. oracle:触发器,自治事务 trigger

    create or replace trigger TRI_FC83_INSERT before insert ON FC83 FOR EACH ROW declare PRAGMA AUTONOMO ...

随机推荐

  1. Git 分支相关

    创建分支 git branch dev 切换分支 git checkout dev (dev换成-可切换为上一个使用的分支) 以上两个可合并为 git checkout -b dev 将新分支推送到远 ...

  2. kali 系列学习04 - 漏洞扫描

    一.比较三类漏洞扫描工具 1.Rapid7 Nexpose 适合较大网络 2.Nessus 更经济,可以申请个人版,搞之后硬盘占用达到20G 以上2个是商业软件,使用容易上手,输入IP地址就能完成所有 ...

  3. php 把一个数随机分成n份

    $money_total=100; $personal_num=10; $min_money=0.01; $money_right=$money_total; $randMoney=[]; for($ ...

  4. 企业级工作流解决方案(七)--微服务Tcp消息传输模型之消息编解码

    Tcp消息传输主要参照surging来做的,做了部分裁剪和改动,详细参见:https://github.com/dotnetcore/surging Json-rpc没有定义消息如何传输,因此,Jso ...

  5. Fruity Parametric EQ 2使用说明(一)——FL Studio插件教程

    FL Studio插件教程-Fruity Parametric EQ 2使用说明(一) Fruity Parametric EQ 2均衡器,是一款我们在FL Studio制作音乐时经常会用到的插件,它 ...

  6. FL studio系列教程(十二):FL Studio中如何导出音频

    在FL Studio中制作好音乐后,最后展现给我们的是一般的音频文件,我们可以通过FL Studio的文件菜单导出最终的文件格式.下面我们就来详细的看一下FL Studio中是如何导出我们想要的音频格 ...

  7. 关于Java里方法重载

    覆盖和重载很重要,并且比较容易混淆,所以面试中常见.基础回答:覆盖(Override),又叫重写,是指子类对父类方法的一种重写,方法名.参数列表必须相同,返回值小于父类,只能比父类抛出更少的异常,访问 ...

  8. C语言讲义——变量的输出

    变量输出·常规 头文件:stdio.h 函数: printf("%", ); 需要占位符%_,要输出几个变量就需要几个占位符. 类型 占位符 助记 int %d d表示十进制dec ...

  9. 基于Docker搭建pypi私有仓库

    一.搭建 1.准备htpasswd.txt文件 该文件内容包含上传包至仓库时验证的用户名和密码 pip install htpasswd htpasswd -sc htpasswd.txt <u ...

  10. vue微博回调空页面

    1.vue微博回调空页面 注:微博回调空页面为:http://127.0.0.1:8888/oauth/callback/ 1.1 页面路径 components\oauth.vue <temp ...