sql >> Databáze >  >> RDS >> Sqlserver

Číst a zvyšovat hodnotu int v SQL Server

Je nezbytné, aby čísla šarží byla sekvenční? Proč prostě nepoužít identity ? To je lepší z hlediska souběžnosti, protože jinak musíte blokovat souběžné pokusy o vložení pro případ, že by byly vráceny zpět a ponechaly by mezeru v sekvenci.

Pokud je to absolutně požadavek, můžete to udělat

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

Vložte řádek s počátečním semenem.

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

Poté alokujte rozsah dostatečné velikosti pro vaši vložku (samozřejmě to nazvěte ve stejné transakci)

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


  1. Jak přidat počet pracovních dní k danému datu

  2. zjevné porušení izolace transakcí v postgresql

  3. Jquery v apexu 4 Klikněte na nápovědu k události

  4. Použití elasticsearch-river-mysql ke streamování dat z databáze MySQL do Elasticsearch