Ist es wichtig, dass die Chargennummern fortlaufend sind? Warum nicht einfach eine identity
verwenden ? Dies ist in Bezug auf die Parallelität besser, da Sie andernfalls gleichzeitige Einfügeversuche blockieren müssen, falls sie zurückgesetzt werden und eine Lücke in der Sequenz hinterlassen würden.
Wenn es absolut erforderlich ist, können Sie dies jedoch tun
CREATE TABLE dbo.Sequence
(
OneRow CHAR(1) DEFAULT('X') PRIMARY KEY CHECK(OneRow = 'X'),
val INT
)
Fügen Sie eine Reihe mit einem Anfangssamen ein.
INSERT INTO dbo.Sequence
(val)
VALUES (1)
Dann weisen Sie Ihrer Einfügung einen Bereich ausreichender Größe zu (rufen Sie ihn natürlich in derselben Transaktion auf)
CREATE PROC dbo.GetSequence
@val AS int OUTPUT,
@n as int =1
AS
UPDATE dbo.Sequence
SET @val = val = (val + @n);