1
排他モードでセッションの主トランザクションでDBMS_LOCK.Requestが発行された場合、Oracle 11gでは自律型プロシージャ(これは独立したトランザクションだと思います)にトランザクションが入ると、 ?PLSQL DBMS_LOCK.REQUESTおよびAutonoumousプロシージャ
排他モードでセッションの主トランザクションでDBMS_LOCK.Requestが発行された場合、Oracle 11gでは自律型プロシージャ(これは独立したトランザクションだと思います)にトランザクションが入ると、 ?PLSQL DBMS_LOCK.REQUESTおよびAutonoumousプロシージャ
はい.. PRAGMA AUTONOMOUS_TRANSACTIONになるようにストアドプロシージャを宣言すると、同じユーザーとしてログインしていて、別のセッションでログインした場合と本質的に同じです。私は、ユーザーAとして実行している2つのSQLPLUSセッションを持っている場合、私はセッション1で更新や削除を行うと、セッション2でコミット例えば、もし、私はまだシナリオを想定したセッションに1
をロールバックすることができます
:
session1> SELECT * FROM t;
session1> LOCK TABLE t IN EXCLUSIVE MODE nowait;
session1> UPDATE t SET descr = 'Un' WHERE id = 1;
私はまだコミットしていません。今、別のセッション(自律型トランザクション)に:
session2> UPDATE t SET descr = 'Deux' WHERE id = 2;
セッション2はまだそのため、セッション1からのコミットを待っている、私はセッション1 に制御を返す自律型トランザクションをコミットすることができません。
「セッション1はまだセッション1からのコミットを待っています。したがって、セッション1に制御を戻す自律型トランザクションをコミットできません」という意味でセッション2でコミットできません。 –
ここでは間違って誤っています。「セッション2はまだセッション1からのコミットを待っています。したがって、セッション1に制御を戻す自律型トランザクションをコミットすることはできません。 – XING