Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Int-Wert in SQL Server lesen und erhöhen

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);