私はいつもこれと同じように行われるのを見てきました: 最初に ID を生成し (おそらく guid)、レコードにマークを付け (複数の同時要求を処理できるようにテーブルをロックします)、データをプルします。
DECLARE @ID UniqueIdentifier
SET @ID = NEWID()
--ProductTable contains third party ID information
UPDATE TOP(1) ProductTable
SET Assigned = 1,
ID = @ID
WHERE Assigned <> 1
SELECT
ThirdPartyID
FROM ProductTable
WHERE ID = @ID
SQL で行いたくない場合は、C# で GUID を生成することもできます。
ここでは、GUID の代わりに ID 列を使用する簡単な方法を示します。Bertrand が指摘したように、ストレージ コストが少なくて済みます。これは、サード パーティの番号を ID 列として ID を持つテーブルに読み込んだことを前提としています。
DECLARE @ID INT
UPDATE TOP(1) ProductTable
SET Assigned = 1,
@ID = ID
WHERE Assigned <> 1
SELECT
ThirdPartyID
FROM ProductTable
WHERE ID = @ID