Tingkah laku tambahan lajur autokenaikan SQL Server selepas rollback transaksi: bukan masalah
Andaikan urus niaga .NET memasukkan data ke dalam pangkalan data SQL Server 2005 dengan kunci utama peningkatan automatik. Kaedah Rollback()
melancarkan operasi sisipan baris dengan betul apabila ralat ditemui dalam transaksi. Walau bagaimanapun, sisipan seterusnya ke dalam jadual yang sama menambah lajur autokenaikan seolah-olah tiada pemulangan semula berlaku, mewujudkan jurang dalam jujukan.
Fahami ciri autokenaikan
Adalah penting untuk memahami bahawa reka bentuk nombor penambahan automatik adalah bukan transaksi. Rasional untuk reka bentuk ini ialah penyekatan mungkin berlaku jika urus niaga lain mesti menunggu untuk menggunakan atau melancarkan semula nombor yang dinaikkan sebelum ia boleh diteruskan.
Untuk menggambarkan perkara ini, pertimbangkan senario berikut di mana Pengguna 1 dan Pengguna 2 berinteraksi dengan Jadual A menggunakan medan kenaikan automatik sebagai lajur ID:
<code>用户 1 ------------ begin transaction insert into A ... insert into B ... update C ... insert into D ... commit 用户 2 ----------- begin transaction insert into A ... insert into B ... commit</code>
Jika transaksi pengguna 2 berlaku selepas transaksi pengguna 1, walaupun sedikit kemudian, operasi sisipan mereka ke jadual A akan terpaksa menunggu sehingga keseluruhan transaksi pengguna 1 selesai, hanya untuk memastikan bahawa kali pertama transaksi itu datang dari jadual A Sama ada nombor kenaikan automatik yang dimasukkan digunakan.
Kesimpulan
Oleh itu, gelagat lajur kenaikan automatik yang terus meningkat selepas urus niaga ditarik balik bukanlah satu ralat, tetapi strategi yang direka dengan sengaja. Jika nombor kenaikan berurutan yang tepat diperlukan, mekanisme lain harus dipertimbangkan untuk menjana nilai tersebut.
Atas ialah kandungan terperinci Adakah Identiti Pelayan SQL (Auto-Peningkatan) Terus Menaik Selepas Pulangan Balik Urus Niaga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!