Is het essentieel dat de lotnummers opeenvolgend zijn? Waarom gebruik je niet gewoon een identity
? Dit is beter in termen van gelijktijdigheid, omdat je anders gelijktijdige invoegpogingen moet blokkeren voor het geval ze worden teruggedraaid en een gat in de reeks achterlaten.
Als het absoluut een vereiste is, kun je het echter doen
CREATE TABLE dbo.Sequence
(
OneRow CHAR(1) DEFAULT('X') PRIMARY KEY CHECK(OneRow = 'X'),
val INT
)
Voeg een rij in met een eerste zaadje.
INSERT INTO dbo.Sequence
(val)
VALUES (1)
Om vervolgens een bereik van voldoende grootte toe te wijzen voor uw invoeging (uiteraard in dezelfde transactie bellen)
CREATE PROC dbo.GetSequence
@val AS int OUTPUT,
@n as int =1
AS
UPDATE dbo.Sequence
SET @val = val = (val + @n);