Apakah nomor lot harus berurutan? Mengapa tidak menggunakan identity
? Ini lebih baik dalam hal konkurensi karena jika tidak, Anda perlu memblokir upaya penyisipan bersamaan jika upaya tersebut dibatalkan dan akan meninggalkan celah dalam urutan.
Jika itu benar-benar merupakan persyaratan, Anda dapat melakukannya
CREATE TABLE dbo.Sequence
(
OneRow CHAR(1) DEFAULT('X') PRIMARY KEY CHECK(OneRow = 'X'),
val INT
)
Masukkan baris dengan benih awal.
INSERT INTO dbo.Sequence
(val)
VALUES (1)
Kemudian untuk mengalokasikan rentang ukuran yang cukup untuk sisipan Anda (sebut saja dalam transaksi yang sama dengan jelas)
CREATE PROC dbo.GetSequence
@val AS int OUTPUT,
@n as int =1
AS
UPDATE dbo.Sequence
SET @val = val = (val + @n);