sql - 如何判断在 Oracle 事务中是否有未提交的工作?

标签 sql oracle transactions

有没有办法判断我在事务中是否有未提交的工作(即 DML)?也许我可以查询数据字典 View ?

一种从运行开放事务的 session 内部和外部找出这一点的方法将是受欢迎的。

谢谢

最佳答案

如果您无权访问 v$session,则可以使用

select dbms_transaction.local_transaction_id from dual;

这仅在 session 内有效,但不需要 v$ 权限。
如果它返回一个非空值,则您已经开始了一个事务。这通常意味着未提交的更改,但也有异常(exception)。如果您发出保存点、更改数据并回滚到保存点,则事务仍然“存在”。此外,使用数据库链接启动事务,即使只是用于选择(或他们曾经使用过)。

关于sql - 如何判断在 Oracle 事务中是否有未提交的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/506456/

相关文章:

python - SQLAlchemy 选择存在限制

oracle - PL/SQL 过程的同步。如何保证一次只执行一个程序?

oracle - 如何从有效包中获取 "ORA-00904: : invalid identifier"?

sql - PLSQL 中的时区转换

c# - 使用TransactionScope时避免启用MSDTC

sql - 是否有任何数据库索引可以提高 'like %keyword%' 查询的性能?

php - 另一个 mysql JOIN 问题

c# - 最佳实践 boolean 逻辑倍数不等于

java - 在 JOOQ 中,如果我直接使用底层连接,我的事务状态是否保持?

mysql - 添加或检索具有唯一键和值的 SQL 表