Dalam pengaturcaraan pangkalan data, mendapatkan semula nilai medan identiti kunci utama selepas operasi sisipan adalah penting. Artikel ini mengkaji pelbagai kaedah untuk tujuan ini dan memberikan cerapan tentang kefungsian dan kesesuaiannya untuk senario yang berbeza.
@@IDENTITY mendapatkan semula nilai identiti terakhir yang dijana dalam sesi semasa, tanpa mengira daripada jadual yang dikaitkan dengan identiti.
declare @t table ( id int identity primary key, somecol datetime default getdate() ) insert into @t default values select @@IDENTITY --returns 1
Kelemahan @@IDENTITY ialah ia tidak terikat skop. Oleh itu, ia boleh mengembalikan nilai identiti terakhir yang dijana oleh mana-mana penyata dalam sesi, termasuk yang di luar urus niaga semasa.
SCOPE_IDENTITY() mendapatkan semula nilai identiti terakhir yang dijana dalam skop semasa, yang terhad kepada penyata dan transaksi yang dihasilkan ia.
select SCOPE_IDENTITY() --returns 1
SKOP_IDENTITI() ialah kaedah yang lebih tepat berbanding @@IDENTITI kerana ia memastikan nilai identiti yang dikembalikan adalah khusus kepada skop semasa.
Menggunakan klausa OUTPUT dengan pernyataan sisipan membolehkan anda mengembalikan jadual yang mengandungi baris yang dimasukkan, termasuk identiti yang dijana nilai.
Create Table #Testing ( id int identity, somedate datetime default getdate() ) insert into #Testing output inserted.* default values
OUTPUT menyediakan cara yang mudah untuk mendapatkan semula berbilang nilai identiti sekaligus dalam satu transaksi. Walau bagaimanapun, ia khusus untuk jadual yang disasarkan dan memerlukan penciptaan jadual tambahan dan operasi pembersihan.
Pilihan kaedah untuk mendapatkan semula nilai identiti terakhir bergantung pada keperluan khusus aplikasi.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Identiti Terakhir dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!