まず、デッドロックを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、私はこの列から読み取り/書き込みを行っています。これは簡潔にするための簡略化です。
ありがとう