電子書籍の厳選無料作品が豊富!

SQLServerであるテーブルを行ロックしています。

(select * from テーブルA with (UPDLOCK) where KEYCD = 1)

行ロック実行時に、他のマシンが既にロックしていた場合、それをエラーとして返す方法はありますでしょうか?
(Oracleでいう"nowait"のようなもの)

最近SQLServerをやりはじめたばかりの超初心者です。
よろしくお願いします(T_T)

A 回答 (1件)

SQL Server(2000時点)にはOracleのnowaitにあたるものはないと思います



かわりにタイムアウトを設定して最終エラー番号を取得するしかないでしょう。
set lock_timeout 3000 <--例は3秒のタイムアウト
select ~
update ~
select @@error <--正常終了は0、ロックによるタイムアウトが発生した場合は1222が返されます
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

やはりないのですね(T_T)
タイムアウトの設定でなんとかしてみます。

ありがとうございました。

お礼日時:2005/12/28 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!