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

Menangani maks(ID) dalam lingkungan bersamaan

Berikut adalah dua cara untuk melakukan apa yang Anda inginkan. Fakta bahwa Anda mungkin berakhir dengan pelanggaran batasan unik pada EmpCode Saya akan meninggalkan Anda untuk khawatir tentang :).

1. Gunakan scope_identity() untuk mendapatkan ID yang terakhir dimasukkan dan menggunakannya untuk menghitung EmpCode .

Definisi tabel:

create table Employees
(
  ID int identity primary key,
  Created datetime not null default getdate(),
  DistrictCode char(2) not null,
  EmpCode char(10) not null default left(newid(), 10) unique
)

Tambahkan satu baris ke Karyawan. Harus dilakukan dalam transaksi untuk memastikan bahwa Anda tidak akan dibiarkan dengan nilai acak default dari left(newid(), 10) di EmpCode :

declare @ID int

insert into Employees (DistrictCode) values ('AB')

set @ID = scope_identity()

update Employees
set EmpCode = cast(year(Created) as char(4))+DistrictCode+right([email protected], 4)
where ID = @ID 

2. Buat EmpCode kolom yang dihitung .

Definisi tabel:

create table Employees
(
  ID int identity primary key,
  Created datetime not null default getdate(),
  DistrictCode char(2) not null,
  EmpCode as cast(year(Created) as char(4))+DistrictCode+right(10000+ID, 4) unique
)

Tambahkan satu baris ke Karyawan:

insert into Employees (DistrictCode) values ('AB')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lakukan Analisis Produk menggunakan Pencarian Teks Lengkap SQL Server. Bagian 1

  2. Bagaimana cara menyebarkan Paket SSIS yang ada di sql server 2012?

  3. Tidak dapat membuat baris dengan ukuran 8937 yang lebih besar dari batas maksimum yang diizinkan yaitu 8060

  4. Penulisan Sirilik SQL Server '?????'

  5. Bagaimana cara menghapus namespace yang berlebihan dalam kueri bersarang saat menggunakan FOR XML PATH