まず、デッドロックを100%防ぐ必要はありませんが、デッドロックを減らすためにできることは何でもいいでしょう。
私は2つのテーブルSource
とを持っていDest
ます。ソースには一意の値がたくさんあります。新しい値を要求する必要があります。Source
その際、に移動しDest
ます。
私は次のSQLを持っています:
begin tran
declare @value
select top 1 @value = [value] from [source]
delete from [Source] where [value]=@value
insert into [Dest] ([Value]) values (@value)
select @value
commit tran
value
これにより、複数のユーザーが同じ行を取得したときにデッドロックが発生することがあります。どうすればこれを防ぐ/減らすことができますか?
SQLServer2008を使用しています
余談ですが、他の列がSource
ありDest
、私はこの列から読み取り/書き込みを行っています。これは簡潔にするための簡略化です。
ありがとう