Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Baca dan Tingkatkan nilai int di SQL Server

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CTE untuk mendapatkan semua anak (keturunan) dari orang tua

  2. Ubah Mode Suspect Database SQL ke Mode Normal Dengan Query

  3. Menjelajahi Operasi Indeks Online Tingkat Partisi di SQL Server 2014 CTP1

  4. Menambahkan kolom dengan kunci utama di tabel yang ada

  5. Tidak dapat membuka basis data default pengguna. Gagal masuk. setelah menginstal SQL Server Management Studio Express