先日、SQL ServerのSQLをAccessのパススルークエリを介して実行していましたが、どうも他のSQL実行と競合してしまうようです。
Select文ですし、ロックはしないと思っていたのですがどうやらロック(競合)しているようです。
Accessでパススルークエリの作り方処理速度の問題やセキュリティの問題など、パススルークエリーを作らなければならないシーンが出てきます。
今日はパススルークエリーの作...
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
ABOUT ME