
DB2 v7を使用しています。
select文で更新ロックをかけました。
PreparedStatementとresultsetをcloseした後、同Connectionでupdate文をかけました。
このとき、select文のロックがかかってるのかわかりませんが、エラーも出ずに更新ができませんでした。
更新ロックのかけ方は 普通のselect文の最後に for updateとしただけです。updateは普通にupdateを行いました。
現在の状況としては、更新ロックがかかっているのかどうかわからないという状態です。
そこで、
(1)更新ロックがかかっているのかどうかを調べる方法があれば、その方法が知りたい。
(2)更新ロックの解除の方法をしりたい。
(3)select文で更新ロックをかけた場合の特別なupdateの方法が、その方法をしりたい。
どなたかご存知のかたがいらっしゃいましたらご教授くださいますようよろしくお願いいたします。
win2000
jdk1.3
No.1ベストアンサー
- 回答日時:
(1)
db2のコマンドウィンドウから「db2 get snapshot for locks on データベース名」とするとロックの一覧を参照できます。どのアプリケーションがどのようなロックを取得しているかがわかります。また、更新ロックを保持している間に他のコネクションから該当行(テーブルロックの場合は該当テーブル)に対して更新を行えないことで確認できます。この際にロックタイムアウトまでの待ち時間を無限に設定していると、いつまでたってもロック獲得待ちのままになります。
(2)
コミットまたはロールバックでロックは解除されます。このことはすべてのロックに関していえます。
(3)
特別な方法はありません。更新ロックを獲得した後は同一コネクションからであれば排他ロックを獲得できます(更新できます)。
よく覚えていませんが、更新ロックに関してもロック保持期間が分離レベルで異なっていたような気がします。特に指定しなければ分離レベルはCS(ReadCommited)ですので、(コミットやロールバックを行わなくても)カーソルが離れた瞬間にロックが開放された気がします。
返答ありがとうございます。
結果としては、教えていただいたコマンドを実行したところ、該当テーブルにロックがかかりっぱなしになっていました。原因は、開発途中に一度更新ロックの設定をしたSQLを流したまま、コミットしていなかったのではないかと思われます。
ロールバックして、再起動(念のため)を行ったら、ロックが解除され、うまくいきました。
親切に説明していただき、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQL update方法 2 2022/06/22 14:07
- Android(アンドロイド) auのAndroid端末のSIMカードがロックされてしまいました。 6 2022/08/22 20:31
- Windows 10 windows11 update の「更新の再開」について初歩的な質問なのですが 1 2022/10/19 00:57
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- タブレット タブレット内でキーボードを出す良い方法を知っている方、教えて下さい。 3 2022/05/26 05:59
- ノートパソコン ThinkPad A485 BIOS update後、聞いたことのない音がしてPCが起動しない。 と 2 2022/05/25 19:10
- Windows 10 Windows 11の累積更新プログラム KB5016629 がインストール出来ない。 2 2022/08/16 12:23
- 運転免許・教習所 運転免許証の暗証番号を勘違いで間違えてしまい、ロックされてしまいました。正しい暗証番号はもう分かって 1 2023/01/30 17:32
- Windows 10 Windows Updateの更新ができない場合に初期化 3 2023/01/18 20:00
- 格安スマホ・SIMフリースマホ SIMカードのロックについて 1 2022/03/29 15:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT文でのデッドロックに対...
-
SELECT時の行ロックの必要性に...
-
AccessShareLock はどの程度気...
-
更新ロックとデッドロック
-
Oracleの排他制御について教え...
-
SQLServer Insertが遅い
-
INSERTにおいてロック処理は必要か
-
排他ロックしたレコードが、別...
-
accessのロック
-
トランザクション中にSELECTし...
-
デッドロックが発生します。
-
SELECT FOR UPDATE にトランザ...
-
UPDATE文で発生するデッドロッ...
-
トランザクションとlast_insert_id
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
SI Object Browserのテーブルス...
-
ACCESSのODBCリンクテーブルに...
-
Accessにインポートしたら並び...
-
3つ以上のテーブルをUNIONする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT文でのデッドロックに対...
-
SELECT時の行ロックの必要性に...
-
SQLServer Insertが遅い
-
accessのロック
-
Oracleの排他制御について教え...
-
AccessShareLock はどの程度気...
-
SELECT文でタイムアウト...
-
UPDATE文で発生するデッドロッ...
-
INSERTにおいてロック処理は必要か
-
DB2でSelectした時(rollback,c...
-
max+1で初番する場合 for updat...
-
排他ロックしたレコードが、別...
-
更新ロックとデッドロック
-
パススルークエリでのロックに...
-
ExcelからAccess2013DBを更新す...
-
同一トランザクションの中でテ...
-
デッドロックが発生します。
-
トランザクション中にSELECTし...
-
同時書き込み
-
SQLServerの明示的なロックの仕...
おすすめ情報