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

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次