有没有办法判断我在事务中是否有未提交的工作(即 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/