Важно ли е номерата на партидата да са последователни? Защо просто не използвате 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);