在自治事务里面commit或者rollback不会影响外部事务,可以做到单独成功,单独失败。在实际应用里面可以多多使用,提高开发效率。贴一个例子:
autonomous_transaction
create table t (msg varchar2(25));
--自治提交
create or replace procedure Autonomous_Insert
as
pragma autonomous_transaction;
begin
insert into t values ('Autonomous Insert');
commit;
end;
--正常的nonautonomous_insert过程
create or replace procedure NonAutonomous_Insert
as
begin
insert into t values ('NonAutonomous Insert');
commit;
end;
--匿名块中非自治事务的行为
begin
insert into t values ('Autonomous Block');
NonAutonomous_Insert;--调用NonAutonomous_Insert过程
rollback;
end;
select * from t;
1 Autonomous Block
2 NonAutonomous Insert
--匿名块执行的插入由NonAutonomous_Insert过程提交。这两个数据行都已提交,所以rollback命令没有什么可以回滚。把该过程与自治事务过程的行为进行比较
delete from t;
commit;
begin
insert into t values ('Autonomous Block');
Autonomous_Insert;--调用Autonomous_Insert过程
rollback;
end;
select * from t;
1 Autonomous Insert
---end
另外,有一位网友写的,可以去看看:
http://hwhuang.iteye.com/blog/650903
分享到:
相关推荐
Oracle自治事务的介绍(Autonomous_Transactions) Oracle自治事务是一种特殊的数据库事务机制,允许在调用事务的上下文中执行独立的事务。这种机制使用PRAGMA_AUTONOMOUS_TRANSACTION语句来定义自治事务。自治事务...
### Oracle自治事务(Trigger)详解 #### 一、概述 Oracle数据库中的触发器是一种存储过程,它被设计为当特定事件发生时自动执行。这些事件包括数据修改操作,如INSERT、UPDATE或DELETE等。触发器可以确保数据的...
要创建一个自治事务,您必须在匿名块的最高层或者存储过程、函数、数据包或触发的定义部分中,使用PL/SQL中的PRAGMA AUTONOMOUS_TRANSACTION语句。在这样的模块或过程中执行的SQL Server语句都是自治的。
在 Oracle 中,我们可以使用 PRAGMA AUTONOMOUS_TRANSACTION 语句来声明自治事务。 例如,在Proc_SaveBill存储过程中,我们可以使用自治事务来生成单据编号: ```sql CREATE OR REPLACE PROCEDURE Proc_SaveBill AS...
Oracle自治事务(Autonomous Transaction)机制可以解决这个问题,确保触发器和存储过程之间的事务独立性。 触发器调用存储过程的过程中可能会出现的问题是,insert语句不是自动提交的,因此当insert语句没有提交时...
在这个例子中,`log_msg`过程使用了`PRAGMA AUTONOMOUS_TRANSACTION`指令,使其成为自治事务,即使主事务失败,日志记录也能成功提交。 #### 结论 事务和锁定是数据库管理中至关重要的概念,它们不仅保证了数据的...
8. Machine Learning 加强的自治数据库:Oracle 自治数据库使用机器学习技术来实现自治数据库,提高数据库的智能化和自动化程度。 Oracle 自治数据库的主要特征包括: * 自动化数据库管理 * 政策驱动的自动化 * ...
另一方面,Autonomous Transaction Processing (ATP) 适合事务处理和混合型工作负载,如事务处理、批量报告、物联网应用以及机器学习应用。 快速供应是Oracle自治数据库的一大亮点。只需回答几个简单的问题,如...
为了声明一个存储过程或函数为自治事务,需要使用`Pragma Autonomous_Transaction`关键字。此声明意味着该存储过程中执行的操作将是独立的,不受外部事务状态的影响。例如: ```sql CREATE OR REPLACE PROCEDURE ...
使用`PRAGMA AUTONOMOUS_TRANSACTION`开启自治事务。 13. **在过程中暂停指定时间**:可以使用`DBMS_LOCK.SLEEP`过程来暂停PL/SQL代码的执行,参数为睡眠的秒数。 14. **计算事务时间和日志量**:事务时间可以通过...
#### 七、自治事务(Autonomous Transactions) - **自治事务定义**:自治事务是一种特殊的事务类型,它可以嵌套在另一个事务中运行,并且独立于外部事务。这意味着,无论外部事务是否成功,自治事务的结果都会被提交...
Seata(Simple Extensible Autonomous Transaction Architecture)是一款由阿里巴巴开源的分布式事务处理框架,设计目标是为微服务架构提供简单易用、高性能的分布式事务解决方案。它致力于解决在大规模分布式系统中...
使用`PRAGMA AUTONOMOUS_TRANSACTION`声明一个过程或函数为自治事务。 ### 6. 变量与参数 PL/SQL中变量和参数的使用至关重要,用于存储和传递数据。变量可以通过`VARIABLE_NAME := expression;`进行赋值,参数则在...
文件中提到了使用Data Pump迁移Oracle数据库到自治数据库(Autonomous Database),询问了迁移过程中需要预期的两个对象。这涉及到了Data Pump工具的知识点,它是一种Oracle提供的用于数据导入导出的工具。正确的...
12. **设置自治事务**:在PL/SQL中,使用`PRAGMA AUTONOMOUS_TRANSACTION`可以在当前事务内部开启新的事务,确保新事务不受外部事务影响。 13. **暂停指定时间**:使用`DBMS_LOCK.SLEEP`函数,如`DBMS_LOCK.SLEEP(5...
- **解答:** 自治事务是一种特殊的事务类型,它不受外部事务的影响,即使外部事务失败,自治事务也可以正常提交。在 PL/SQL 中,可以通过 DECLARE 或者 BEGIN 块来声明自治事务。示例代码如下: ```plsql DECLARE...
使用 `PRAGMA AUTONOMOUS_TRANSACTION` 可以创建自治事务,确保过程内部的事务不影响外部事务。例如: ```sql FUNCTION Get_SerialNo(i_SerialType NUMBER) RETURN VARCHAR2 IS PRAGMA AUTONOMOUS_TRANSACTION; ...
Seata(Simple Extensible Autonomous Transaction Architecture)是一款专为微服务设计的开源分布式事务解决方案,它致力于提供高性能和简单易用的分布式事务服务。在当前的云计算和大数据背景下,分布式系统已经...
- 使用自治事务(Autonomous Transaction)来处理需要独立提交或回滚的子事务,这可以提高事务处理的灵活性。 总的来说,理解并正确处理Oracle的变异表错误是数据库管理员和开发人员必备的技能,选择合适的解决方案...