• ベストアンサー

SQLServerでのロックについて

SQLServerであるテーブルを行ロックしています。 (select * from テーブルA with (UPDLOCK) where KEYCD = 1) 行ロック実行時に、他のマシンが既にロックしていた場合、それをエラーとして返す方法はありますでしょうか? (Oracleでいう"nowait"のようなもの) 最近SQLServerをやりはじめたばかりの超初心者です。 よろしくお願いします(T_T)

質問者が選んだベストアンサー

  • ベストアンサー
  • 7marine
  • ベストアンサー率36% (59/160)
回答No.1

SQL Server(2000時点)にはOracleのnowaitにあたるものはないと思います かわりにタイムアウトを設定して最終エラー番号を取得するしかないでしょう。 set lock_timeout 3000 <--例は3秒のタイムアウト select ~ update ~ select @@error <--正常終了は0、ロックによるタイムアウトが発生した場合は1222が返されます

tamzou
質問者

お礼

ご回答ありがとうございます。 やはりないのですね(T_T) タイムアウトの設定でなんとかしてみます。 ありがとうございました。

関連するQ&A