web-dev-qa-db-ja.com

現在のSQLセッションにコミットされていない変更があるかどうかを確認するにはどうすればよいですか?

SQL Developerにいて、現在のユーザーセッション(つまり、接続)にコミットされていない変更があるかどうかを確認するとします。

SQL Developerを終了すると、そのようなチェックが行われ、続行方法を示すダイアログボックスが表示されます。終了せずに確認したい-例特別なSQLステートメントまたはSQL開発者アクションを実行する。

理想的には、現在のセッションが「ダーティ」である(つまり、コミットされていない変更がある)場合に視覚的に示されるようにSQL Developerを構成できればすばらしいでしょう。ワークシートの周りに赤い余白を表示する。

3
maxschlepzig

もあります

SELECT dbms_transaction.local_transaction_id FROM dual;

保留中のコミットがある場合は、トランザクションIDが表示されます。

4
mivk

V$TRANSACTIONを確認できます。次に例を示します。

create table t(a number);

Table created.

insert into t values (1);

1 row created.

select t.status
from v$transaction t
join v$session s
on t.ses_addr = s.saddr
where s.sid = sys_context('USERENV', 'SID');

STATUS
----------------
ACTIVE

コミット後:

commit;

Commit complete.

select t.status
from v$transaction t
join v$session s
on t.ses_addr = s.saddr
where s.sid = sys_context('USERENV', 'SID');

no rows selected

ただし、SYS.V_$TRANSACTIONおよびSYS.V_$SESSIONに対するSELECT特権を付与する必要があります。

4
Balazs Papp