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

dapatkan ID catatan SQL baru

SELECT SCOPE_IDENTITY() 

menggunakan @@IDENTITY dapat memberikan hasil yang tidak diharapkan, jadi berhati-hatilah dalam menggunakannya. Pemicu yang menyisipkan catatan ke tabel lain akan menyebabkan nilai @@IDENTITY berubah - di mana SCOPE_IDENTITY() akan memberi Anda identitas terakhir hanya dari cakupan Anda saat ini.

Berikut adalah contoh yang akan menunjukkan perbedaan antara @@IDENTITY dan SCOPE_INSERT() dan bagaimana mereka dapat mengembalikan nilai yang berbeda..

use tempdb
go
create table table1
    (ID int identity)
go
create table table2
    (ID int identity(100, 1))
go
create trigger temptrig 
    on table1 
    for insert
as
begin

    insert  table2 
     default values;

end
go
insert  table1 
default values;
select  SCOPE_IDENTITY(), 
        @@IDENTITY

Opsi lain yang belum pernah dibahas siapa pun di sini adalah menggunakan klausa OUTPUT yang ada di SQL 2005. Dalam kasus ini, Anda hanya perlu menambahkan klausa output ke sisipan Anda, dan kemudian menangkap recordset itu dari kode Anda. Ini berfungsi dengan baik saat menyisipkan beberapa catatan, bukan hanya 1...

use tempdb
go
create table table1
    (ID int identity)
go
insert   table1 
output   inserted.ID
default values;
--OR...
insert   table1 
output   inserted.$identity
default values;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 9 Tips Terbaik untuk Menyiapkan Cluster SQL Server Anda

  2. Tanggal penanganan di SQL Server

  3. Tambahkan warna baris bergantian ke laporan layanan Pelaporan SQL Server

  4. Apa perbedaan antara transformasi Gabung Gabung dan Pencarian di SSIS?

  5. Mendapatkan Id dari baris yang saya perbarui di Sql Server