SQL Server

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

SQLの文法

先日、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
アズビーパートナーズ
アズビーパートナーズ
プログラマーと社内SEとしての経験を活かして、 情報システム部門のご相談を承ります。 得意な分野はAccessによる短納期開発、 BIツール(QlikSense/QlikView)の開発です。 現在はCMSを利用したホームページの作成にも力を入れています。
今のスキルのままで大丈夫?

あなたのスキル。今のままで大丈夫ですか?

時代のニーズに合った開発スキルを身につけてあなたの価値を高めましょう。

\オンラインでも教室でも学べるおすすめのスクール/

TECH::CAMP(エンジニアスクール)

まずは基礎から・・・という方はProgateUdemyどっとインストールなどがおすすめ!

スキルアップについて詳しくはこちら