sql >> Database teknologi >  >> RDS >> Sqlserver

Læs og forøg int-værdi i SQL Server

Er det vigtigt, at partinumrene er sekventielle? Hvorfor ikke bare bruge en identity ? Dette er bedre med hensyn til samtidighed, da du ellers er nødt til at blokere samtidige indsættelsesforsøg, hvis de bliver rullet tilbage og ville efterlade et hul i sekvensen.

Hvis det absolut er et krav, kan du dog gøre det

CREATE TABLE dbo.Sequence 
  (
     OneRow CHAR(1) DEFAULT('X') PRIMARY KEY CHECK(OneRow = 'X'),
     val    INT
  )  

Indsæt en række med et første frø.

INSERT INTO dbo.Sequence 
            (val)
VALUES     (1)  

Så for at tildele en række af tilstrækkelig størrelse til dit skær (kald det selvfølgelig i samme transaktion)

CREATE PROC dbo.GetSequence
@val AS int OUTPUT,
@n as int =1
AS
UPDATE dbo.Sequence 
SET @val = val = (val + @n);


  1. Tilføjelse af et linjeskift i MySQL INSERT INTO tekst

  2. Sum, subtraher og sammenføj flere mysql-tabelkolonner

  3. Hvordan importerer man en Oracle-database fra dmp-fil og logfil?

  4. Henter MySQL med Kivy