-3
insert into table b select * from table a (nolock)  

どこに置くのnolock?上記は無効な列名'nolock'としてエラーを出します

a私の要件はテーブルからテーブルにデータを挿入するbことですが、頻繁にデッドロックが発生しています。

4

1 に答える 1

2

これがSQLServer用であると仮定すると...

それを書くためのより現代的な方法は

insert into b 
   select * 
   from a with (readuncomitted)

これを使用することには多くのリスクと結果があります。readuncommittedの最新バージョンであるを使用するときに、テーブルaが常に一貫した結果を提供するかどうかを検討する価値がありNOLOCKSます。

これでも、その時点でそれらのテーブルに他に何が起こっているかに応じて、デッドロックが発生する可能性があります。コミットされていないデータを読み取り、読み取り時にテーブルaにロックを保持しないことにより、デッドロックの潜在的な原因の1つを排除します。

詳細については、次の質問を参照してください。

nolock(SQL Server)は悪い習慣を示唆していますか?

于 2012-04-28T10:15:26.360 に答える