insert into table b select * from table a (nolock)
どこに置くのnolock
?上記は無効な列名'nolock'としてエラーを出します
a
私の要件はテーブルからテーブルにデータを挿入するb
ことですが、頻繁にデッドロックが発生しています。
insert into table b select * from table a (nolock)
どこに置くのnolock
?上記は無効な列名'nolock'としてエラーを出します
a
私の要件はテーブルからテーブルにデータを挿入するb
ことですが、頻繁にデッドロックが発生しています。
これがSQLServer用であると仮定すると...
それを書くためのより現代的な方法は
insert into b
select *
from a with (readuncomitted)
これを使用することには多くのリスクと結果があります。readuncommitted
の最新バージョンであるを使用するときに、テーブルaが常に一貫した結果を提供するかどうかを検討する価値がありNOLOCKS
ます。
これでも、その時点でそれらのテーブルに他に何が起こっているかに応じて、デッドロックが発生する可能性があります。コミットされていないデータを読み取り、読み取り時にテーブルaにロックを保持しないことにより、デッドロックの潜在的な原因の1つを排除します。
詳細については、次の質問を参照してください。