首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不选择query事务?[甲骨文]

为什么不选择query事务?[甲骨文]
EN

Stack Overflow用户
提问于 2015-07-03 09:24:00
回答 1查看 885关注 0票数 5

我正在尝试调试下一个oracle过程:

代码语言:javascript
复制
create or replace PROCEDURE CASE_6_TRANS_2
AS
   V_NUM NUMBER(38,0);
BEGIN
  SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
  SELECT COUNT(AE.ID) INTO V_NUM FROM AUDIT_EVENT AE WHERE ID=10; 
  COMMIT; --BREAKPOINT
END CASE_6_TRANS_2;

但是,当我想在断点看到当前事务时,V$TRANSACTION表是空的。

文档说:

事务在遇到第一个可执行SQL语句时开始。可执行SQL语句是一种SQL语句,它生成对数据库实例的调用,包括DML和DDL语句以及SET事务语句。

根据文档 选择查询是DML

  1. 事务是否已启动,但未在V$TRANSACTION中显示?
  2. 或者事务根本不开始。为什么不呢?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-03 11:01:43

事务以SET事务开始,但是transaction_id的分配被推迟到第一个DML (在我的经验中不是SELECT语句)。

同一消息来源说..。

事务开始时,Oracle数据库将事务分配给可用的撤消数据段,以记录新事务的撤消条目。直到分配了撤消段和事务表槽才会分配事务ID,这发生在第一个DML语句中。

这对我来说是有意义的,没有理由提交或回滚一个选择。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31203189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档