2017-02-27 5 views

答えて

2

興味深い質問、と私はあなたの動機とこの質問の背後にあるあなたの最終目標を知りたいです!
私はそこにあれば、行に開催された共有ロックを見つけるために(更新なしのselect文を経由して、)方法があるとは思いません。セッションが行を変更しようとしたときにのみ、他のセッションが共有ロックを保持しているかどうかが分かります。あなただけの行に開催された排他ロックがあるかどうかを知りたい場合は
は、あなたは反復可能読み取りにあなたのセッションの分離レベルを設定することができます。
set isolation to repeatable read; select * from tab1 where col1=1;
上記の情報は、テーブル自体が行レベルのロックを使用することも前提としています(デフォルトはページレベルのロックです)。
注:反復可能読み取りは、最も制限の分離レベルです。 (https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_0030.htm

+0

私は基本的に複数の内部結合の結果であるアプリケーションで処理する情報の行を持っています。最終的には、処理が完了した後、1つのテーブルだけが更新されます(この時点で、ロックのためにアプリケーションは終了します)。 – mihirp724

+0

その行でどのセッションがロックを保持しているか調べたいですか?これは、(アイソレーションレベルに応じて)他のどのセッションでも同時に読み込みまたは更新を試みることができます。 DBA権限を持っている場合、同時セッション間の競合を減らすために多くのアクションを実行できます。 –

+0

いいえ、処理している現在の行がロックされているかどうか(誰がロックしているかにかかわらず)を知りたいだけです。 – mihirp724

関連する問題