Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Четене и увеличаване на int стойност в SQL Server

Важно ли е номерата на партидата да са последователни? Защо просто не използвате identity ? Това е по-добре по отношение на паралелността, тъй като в противен случай трябва да блокирате едновременни опити за вмъкване, в случай че бъдат върнати назад и оставят празнина в последователността.

Ако това е абсолютно изискване, можете да го направите

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

Вмъкване на ред с начално семе.

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

След това да разпределите диапазон с достатъчен размер за вашето вмъкване (очевидно го извикайте в същата транзакция)

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как ефективно моделирате наследяването в база данни?

  2. TSQL - създайте съхранена процедура в изявление за транзакция

  3. Най-добрият инструмент за възстановяване на SQL за 2020 г. за възстановяване на важна SQL база данни

  4. SQL Server:Заявка бързо, но бавно от процедура

  5. Не може да влезе в съхранена процедура на отдалечен SQL Server 2008