SQL ServerのSELECT SQLで、明示的にロックしないように指定する方法

当ページのリンクには広告が含まれています。
SQLの文法
  • URLをコピーしました!

先日、SQL ServerのSQLをAccessのパススルークエリを介して実行していましたが、どうも他のSQL実行と競合してしまうようです。

Select文ですし、ロックはしないと思っていたのですがどうやらロック(競合)しているようです。

SQL ServerのSQL文には明示的にロックしない命令があります。

そこで、パススルークエリのSQLにnolock(ノーロック)を指定したところ競合せずに並列に処理を実行することができました。

ロックが気になっている方はお試しください。

SQL Serverのnolock構文

SELECT * FROM テーブル名 with (nolock)

SELECT * FROM テーブル名 AS T with (nolock)

※テーブル名の後ろに『with (nolock)』をつけます。where句やORDER句は『with (nolock)』の後に記述します。

postgresqlには SQLServerのNoLockに相当する構文はありません。
postgresqlのSELECT文は明示的に更新を伴うSELECTでなければロックしない仕様です。
<明示的に更新を伴うSELECT文とは…>
SELECT * FROM テーブル名 FOR UPDATE

📘 SQLを基礎からしっかり身につけたい方へ
ブラウザだけでSQLを試せる練習環境つき。会社のデータベースを触らずに、ドリルでくり返し練習できます。

中山清喬・飯田理恵子 著/インプレス
\楽天ポイント4倍セール!/
楽天市場
\商品券4%還元!/
Yahooショッピング

📗 CASE式をもっと使いこなしたい方へ
最初の章がまるごとCASE式。「SQLが書ける」から「上手に書ける」へステップアップしたい人に。

\楽天ポイント4倍セール!/
楽天市場
\商品券4%還元!/
Yahooショッピング
目次