ロット番号は連続している必要がありますか? identity
を使用しない理由 ?そうしないと、同時挿入試行がロールバックされてシーケンスにギャップが生じる場合に備えて、同時挿入試行をブロックする必要があるため、これは同時実行性の点で優れています。
絶対に必要な場合は、できる
CREATE TABLE dbo.Sequence ( OneRow CHAR(1) DEFAULT('X') PRIMARY KEY CHECK(OneRow = 'X'), val INT )
プレ>初期シードを持つ行を挿入します。
INSERT INTO dbo.Sequence (val) VALUES (1)
プレ>次に、挿入に十分なサイズの範囲を割り当てます (明らかに同じトランザクションで呼び出します)
CREATE PROC dbo.GetSequence @val AS int OUTPUT, @n as int =1 AS UPDATE dbo.Sequence SET @val = val = (val + @n);
プレ>