sql >> Database >  >> RDS >> Sqlserver

Int-waarde lezen en verhogen in SQL Server

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


  1. Heeft de RDS-proxy invloed op de huidige pooling aan de applicatiezijde?

  2. Automatisch opnieuw opvragen met LoaderManager

  3. PHP-tekenreeksverschillen en dynamische beperkingen

  4. EF Code eerst, hoe registreer ik dezelfde tabelnaam met een ander schema?