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

Gunakan @@IDENTITY untuk Mengembalikan Nilai Identitas yang Disisipkan Terakhir di SQL Server

Di SQL Server, Anda dapat menggunakan T-SQL @@IDENTITY fungsi sistem untuk mengembalikan nilai identitas yang dimasukkan terakhir di sesi saat ini.

Perhatikan bahwa ini mengembalikan nilai identitas terakhir yang dihasilkan di apa saja tabel di sesi saat ini . Ini berbeda dengan IDENT_CURRENT() fungsi, yang mengembalikan nilai identitas yang dimasukkan terakhir untuk tabel tertentu .

SCOPE_IDENTITY() fungsinya sangat mirip dengan @@IDENTITY dalam hal itu juga mengembalikan nilai identitas yang dimasukkan terakhir di sesi saat ini. Perbedaannya adalah SCOPE_IDENTITY() terbatas pada cakupan saat ini.

Contoh 1

Berikut adalah contoh kode dasar @@IDENTITY penggunaan.

PILIH @@IDENTITAS SEBAGAI [Nilai Identitas yang Disisipkan Terakhir];

Hasil:

+--------------------------------+| Nilai Identitas yang Disisipkan Terakhir ||--------------------------------|| NULL |+--------------------------------+

Alasan ini mengembalikan NULL adalah karena saya membuka sesi baru ke SQL Server, dan saya belum memperbarui kolom identitas selama sesi saya saat ini.

Di bawah ini adalah beberapa kode yang melakukan beberapa pembaruan kolom identitas.

CREATE TABLE Cats(id int IDENTITY);CREATE TABLE Dogs(id int IDENTITY);MASUKKAN NILAI DEFAULT Kucing;MASUKKAN NILAI DEFAULT Kucing;SELECT @@IDENTITY AS [Nilai Identitas yang Dimasukkan Terakhir];

Hasil:

+--------------------------------+| Nilai Identitas yang Disisipkan Terakhir ||--------------------------------|| 2 |+--------------------------------+

Di sini, saya membuat beberapa tabel, menyisipkan beberapa data, lalu memilih nilai identitas saat ini.

Nilai identitas saat ini adalah 2 karena saya memasukkan dua baris ke dalam tabel itu.

Sekarang mari kita masukkan satu baris ke tabel lainnya:

MASUKKAN NILAI DEFAULT Anjing;PILIH @@IDENTITAS SEBAGAI [Nilai Identitas yang Disisipkan Terakhir];

Hasil:

+--------------------------------+| Nilai Identitas yang Disisipkan Terakhir ||--------------------------------|| 1 |+--------------------------------+

Nilai yang dikembalikan adalah 1, karena itulah nilai identitas yang dimasukkan terakhir untuk sesi ini.

Contoh 2 – Dibandingkan dengan IDENT_CURRENT()

Ini dibandingkan dengan IDENT_CURRENT() .

SELECT @@IDENTITY AS [@@IDENTITY], IDENT_CURRENT('Cats') AS [IDENT_CURRENT('Cats')], IDENT_CURRENT('Dogs') AS [IDENT_CURRENT('Dogs')];

Hasil:

+-------------+--------------+----- --------------------+| @@IDENTITAS | IDENT_CURRENT('Kucing') | IDENT_CURRENT('Anjing') ||--------------+-------------------------+- ------------------------|| 1 | 2 | 1 |+--------------+-------------------------+------ -------------------+

Seperti yang disebutkan, IDENT_CURRENT() mengembalikan hasilnya berdasarkan tabel yang ditentukan. Oleh karena itu, kita dapat menggunakannya untuk menemukan nilai identitas terakhir untuk setiap tabel.

Contoh 3 – Beralih ke Sesi Baru

Sekarang jika saya membuka koneksi baru dan pilih @@IDENTITY sekali lagi, inilah yang terjadi:

GUNAKAN Tes;PILIH @@IDENTITAS SEBAGAI [@@IDENTITY], IDENT_CURRENT('Kucing') SEBAGAI [IDENT_CURRENT('Kucing')], IDENT_CURRENT('Anjing') SEBAGAI [IDENT_CURRENT('Anjing')]; 

Hasil:

+-------------+--------------+----- --------------------+| @@IDENTITAS | IDENT_CURRENT('Kucing') | IDENT_CURRENT('Anjing') ||--------------+-------------------------+- ------------------------|| NULL | 2 | 1 |+--------------+--------------+------ -------------------+

@@IDENTITY hasilnya NULL karena saya belum memasukkan apa pun ke dalam kolom identitas di sesi baru.

IDENT_CURRENT() hasilnya bukan NULL, karena hasilnya berdasarkan tabel – bukan sesi.

@@IDENTITY vs SCOPE_IDENTITY() vs IDENT_CURRENT()

Lihat IDENT_CURRENT vs @@IDENTITY vs SCOPE_IDENTITY di SQL Server:Apa Perbedaannya? untuk contoh sederhana yang menjelaskan perbedaan antara ketiga fungsi ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa itu STATISTICS XML di SQL Server?

  2. Contoh Konversi 'smalldatetime' menjadi 'datetime' di SQL Server (T-SQL)

  3. Gunakan OBJECTPROPERTY() untuk Mengetahui apakah Objek adalah Batasan PERIKSA di SQL Server

  4. Penggabungan yang Dikelompokkan di SQL Server

  5. OLTP Dalam Memori:Apa yang baru di SQL Server 2016