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

SQL Identity (autonumber) Bertambah Bahkan dengan Transaksi Rollback

Jika Anda memikirkannya, jumlah kenaikan otomatis seharusnya tidak menjadi transaksional. Jika transaksi lain harus menunggu untuk melihat apakah auto-number akan digunakan atau "rolled back", mereka akan diblokir oleh transaksi yang ada menggunakan auto-number. Misalnya, perhatikan kode psuedo saya di bawah ini dengan tabel A menggunakan bidang nomor otomatis untuk kolom ID:

User 1
------------
begin transaction
insert into A ...
insert into B ...
update C ...
insert into D ...
commit


User 2
-----------
begin transaction
insert into A ...
insert into B ...
commit

Jika transaksi pengguna 2 dimulai satu milidetik setelah pengguna 1, maka penyisipan mereka ke tabel A harus menunggu seluruh transaksi pengguna 1 selesai hanya untuk melihat apakah nomor otomatis dari penyisipan pertama ke A telah digunakan.

Ini adalah fitur, bukan bug. Saya akan merekomendasikan menggunakan skema lain untuk menghasilkan nomor otomatis jika Anda membutuhkannya berurutan dengan ketat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengonversi DateTime ke VarChar

  2. Temukan dan Hapus Substring Berulang

  3. Cara menjumlahkan Akun

  4. Cara Mengonversi Huruf Kecil ke Huruf Besar di SQL Server – UPPER ()

  5. Jalankan semua file SQL dalam direktori