Czy ważne jest, aby numery partii były sekwencyjne? Dlaczego nie po prostu użyć identity
? Jest to lepsze pod względem współbieżności, ponieważ w przeciwnym razie musisz zablokować równoczesne próby wstawiania na wypadek, gdyby zostały wycofane i pozostawiłyby lukę w sekwencji.
Jeśli jednak jest to absolutnie konieczne, możesz to zrobić
CREATE TABLE dbo.Sequence
(
OneRow CHAR(1) DEFAULT('X') PRIMARY KEY CHECK(OneRow = 'X'),
val INT
)
Wstaw rząd z początkowym nasionem.
INSERT INTO dbo.Sequence
(val)
VALUES (1)
Następnie, aby przydzielić zakres odpowiedniego rozmiaru dla swojej wkładki (oczywiście nazwij to w tej samej transakcji)
CREATE PROC dbo.GetSequence
@val AS int OUTPUT,
@n as int =1
AS
UPDATE dbo.Sequence
SET @val = val = (val + @n);