`
zenghuiss
  • 浏览: 26047 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

神奇的事务AUTONOMOUS TRANSACTION

阅读更多
今天从项目中看到一个触发器,看到一段
PROCEDURE a(v_apply_no NUMBER,v_line_no NUMBER,v_rma_center NUMBER) IS 
PRAGMA AUTONOMOUS_TRANSACTION; 

以前都没见过这个AUTONOMOUS_TRANSACTION,于是google之
找了好几篇,弄明白大概是干什么用的了
原文大概是这样:
Autonomous Transactions允许你不理会当前的上下文环境,去完成一个新的transaction,而当你回到原来的上下文环境的时候,这个新transaction做过的事情不会受到影响。
呃,似乎不太好懂
看个例子吧~
CREATE TABLE at_test (
  id           NUMBER       NOT NULL,
  description  VARCHAR2(50) NOT NULL
);

INSERT INTO at_test (id, description) VALUES (1, 'Description for 1');
INSERT INTO at_test (id, description) VALUES (2, 'Description for 2');
//先不commit;

然后
DECLARE
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  FOR i IN 3 .. 10 LOOP
    INSERT INTO at_test (id, description)
    VALUES (i, 'Description for ' || i);
  END LOOP;
  COMMIT;
END;
这时候去SELECT * FROM at_test;会发现有10条记录,
好,rollback  再SELECT * FROM at_test;
有意思的事出现了~只有8条资料,
对,你应该懂了,procedure中的commit只对当前的AUTONOMOUS_TRANSACTION中的insert 动作起了作用,所以前面2个insert就被rollback啦,很好懂吧
分享到:
评论

相关推荐

    Oracle自治事务的介绍(Autonomous_Transactions)

    这种机制使用PRAGMA_AUTONOMOUS_TRANSACTION语句来定义自治事务。自治事务可以是存储过程、函数、本地过程、打包过程、类型方法或顶层匿名块等形式。 自治事务的特点是,它与调用事务无关联,彼此独立。自治事务...

    事务与锁定的问题 自治事务

    自治事务(Autonomous Transaction)是一种特殊的事务类型,它可以在主事务的执行过程中独立启动和提交,不受主事务的提交或回滚的影响。自治事务主要用于日志记录、审计、通知等功能,确保即使主事务失败,关键的...

    oracle自治事务(Trigger)

    在某些情况下,可能需要在触发器内部进行一些操作,而这些操作又不希望受到触发器外部事务的影响,这时候就需要使用到自治事务(Autonomous Transaction)。通过声明`Pragma Autonomous_Transaction;`,可以在触发器...

    Oracle数据完整性嵌套事务调用分析研究

    在上面的示例中,我们使用 PRAGMA AUTONOMOUS_TRANSACTION 语句来声明自治事务,然后调用 Func_GenerateCode 函数来生成单据编号,并将其保存到数据库中。这样即使保存操作失败,自治事务也可以确保数据的一致性。 ...

    seata-0.8.1.zip

    Seata:Simple Extensible Autonomous Transaction Architecture,简易可扩展的自治式分布式事务管理框架,其前身是fescar。阿里巴巴GTS的开源版实现,是一种分布式事务的解决方案,详情请参看seata官方文档。 seata...

    transaction-seate.rar

    Seata,全称Simple Extensible Autonomous Transaction Architecture,是一个开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。它旨在解决微服务架构下的分布式事务问题,支持AT(两阶段提交...

    Oracle中独立事务的学习.docx

    在Oracle中,通过使用`PRAGMA AUTONOMOUS_TRANSACTION`语句,我们可以创建一个自主事务(Autonomous Transaction),这种事务在当前事务的上下文中运行,但有自己的提交和回滚机制,不受外部事务的影响。 1. **独立...

    oracle触发器调用存储过程

    Oracle自治事务(Autonomous Transaction)机制可以解决这个问题,确保触发器和存储过程之间的事务独立性。 触发器调用存储过程的过程中可能会出现的问题是,insert语句不是自动提交的,因此当insert语句没有提交时...

    fescar-transaction.zip

    Fescar(原名Seata,即Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的一款高性能、轻量级的分布式事务解决方案,适用于微服务架构。fescar-transaction.zip文件是一个包含Fescar分布式...

    seata分布式事务0.9.0

    Seata(Simple Extensible Autonomous Transaction Architecture)是一款开源的分布式事务解决方案,主要针对微服务场景下的分布式事务问题。在0.9.0版本中,Seata提供了高性能和简单易用的特性,旨在帮助开发者解决...

    Seata是一种易于使用高性能基于Java的开源分布式事务解决方案

    Seata(Simple Extensible Autonomous Transaction Architecture)是一款由阿里巴巴开源的分布式事务处理框架,设计目标是为微服务架构提供简单易用、高性能的分布式事务解决方案。它致力于解决在大规模分布式系统中...

    Oracle中怎样用自治事务保存日志表

    要创建一个自治事务,您必须在匿名块的最高层或者存储过程、函数、数据包或触发的定义部分中,使用PL/SQL中的PRAGMA AUTONOMOUS_TRANSACTION语句。在这样的模块或过程中执行的SQL Server语句都是自治的。

    Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务

    Seata(Simple Extensible Autonomous Transaction Architecture)是一款专为解决分布式环境中的事务一致性问题而设计的开源框架。它致力于提供高性能和简单易用的分布式事务服务,使得开发者在微服务架构或者分布式...

    seata分布式事务解决方案

    Seata(Simple Extensible Autonomous Transaction Architecture)是一款开源的分布式事务解决方案,旨在提供高性能和简单易用的分布式事务服务。在微服务架构中,由于服务之间的交互变得复杂,单个数据库事务无法...

    分布式事务解决方案.zip

    5. **分布式事务中间件Seata**:Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的分布式事务框架,支持AT(Automatic Transaction Mode)、TCC、Saga和XA等事务模式,提供高性能和...

    阿里开源 分布式事务解决方案 seata-samples-master.zip

    阿里开源的Seata(Simple Extensible Autonomous Transaction Architecture)是一个全球分布式事务解决方案,旨在提供高性能和简单易用的分布式事务服务。Seata-samples-master.zip是一个包含多种技术集成示例的...

    存储过程和函数

    根据提供的文件信息,本文将详细解析数据库中的存储过程与函数,并深入探讨自主事务(autonomous_transaction)的概念及其在PL/SQL中的应用。 ### 一、存储过程 #### 1. 创建存储过程 存储过程是一种存储在数据库...

    分布式事务seata相关落地代码

    Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的一款分布式事务解决方案,它致力于提供高性能和简单易用的分布式事务服务。本篇将详细介绍Seata的原理、核心组件以及如何在实际...

    分布式事务 资源文件 seata

    Seata(Simple Extensible Autonomous Transaction Architecture)是一个开源的分布式事务解决方案,它致力于提供高性能和简单易用的分布式事务服务。 Seata的设计目标是为了解决在大规模分布式环境下的事务一致性...

    Java_Seata是一个易于使用的高性能开源分布式事务解决方案.zip

    Seata(Simple Extensible Autonomous Transaction Architecture)是阿里中间件团队推出的一个项目,旨在解决微服务架构下的分布式事务问题,帮助开发者摆脱“两阶段提交”及其变种的复杂性,实现分布式环境中的ACID...

Global site tag (gtag.js) - Google Analytics