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

Gunakan IDENT_CURRENT() untuk Mengembalikan Nilai Identitas Saat Ini pada Kolom Identitas di SQL Server

Di SQL Server, Anda dapat menggunakan T-SQL IDENT_CURRENT() berfungsi untuk mengembalikan nilai identitas terakhir yang dihasilkan untuk tabel atau tampilan tertentu pada kolom identitas. Nilai identitas terakhir yang dihasilkan dapat untuk sesi apa pun dan cakupan apa pun.

Sintaks

Sintaksnya seperti ini:

IDENT_CURRENT( 'table_or_view' )

tabel_atau_tampilan argumen adalah nama tabel atau tampilan yang nilai identitasnya dikembalikan.

Contoh 1 – Penggunaan Dasar

Berikut ini contoh kode dasar.

SELECT IDENT_CURRENT('Pets') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| 3        |
+----------+

Dalam hal ini, nilai identitas saat ini adalah 3.

Berikut kueri lain yang memeriksa lebih banyak tabel.

SELECT 
  IDENT_CURRENT('Pets') AS Pets,
  IDENT_CURRENT('BestFriends') AS BestFriends,
  IDENT_CURRENT('Cities') AS Cities;

Hasil:

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 3      | 121           | 180      |
+--------+---------------+----------+

Contoh 2 – Menyertakan Skema

Anda juga dapat menyertakan skema dalam argumen.

SELECT IDENT_CURRENT('dbo.Pets') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| 3        |
+----------+

Contoh 3 – Setelah Sisipan

Dalam contoh ini, saya memasukkan dua baris lagi ke dalam Hewan peliharaan tabel, lalu pilih IDENT_CURRENT() lagi.

INSERT INTO Pets (PetName)
VALUES ('Brian'), ('Alf');

SELECT IDENT_CURRENT('dbo.Pets') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| 5        |
+----------+

Berikut tampilan tabelnya:

SELECT * FROM Pets;

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
| 4       | Brian     |
| 5       | Alf       |
+---------+-----------+

PetId kolom adalah kolom identitas. Nilai seednya adalah 1, dan nilai increment-nya juga 1.

Lihat Cara Menggunakan Properti IDENTITY() di SQL Server untuk kode yang digunakan untuk membuat tabel ini.

Contoh 4 – Centang Semua Tabel di Database

Berikut ini contoh pemeriksaan semua tabel dalam database untuk nilai benih identitasnya.

SELECT 
  TABLE_SCHEMA, 
  TABLE_NAME,   
  IDENT_CURRENT(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_CURRENT  
FROM INFORMATION_SCHEMA.TABLES  
WHERE IDENT_CURRENT(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;

Hasil:

+----------------+----------------+-----------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_CURRENT   |
|----------------+----------------+-----------------|
| dbo            | ConstraintTest | 17              |
| dbo            | Event          | 1               |
| dbo            | Scoreboard     | 8               |
| dbo            | Pets           | 5               |
| dbo            | BestFriends    | 121             |
| dbo            | Cities         | 180             |
| dbo            | Colors         | 6               |
| dbo            | t6             | 1               |
| dbo            | t7             | 100             |
+----------------+----------------+-----------------+

Tentang Nilai Pengembalian

Nilai kembalian untuk IDENT_CURRENT() adalah numeric(@@MAXPRECISION,0)) . Ini berarti bahwa ini adalah tipe data numerik dengan presisi dan skala tetap.

Ketepatan tergantung pada server. @@MAXPRECISION argumen mengembalikan tingkat yang digunakan oleh tipe data desimal dan numerik seperti yang saat ini diatur di server. Presisi menentukan jumlah total digit desimal maksimum (termasuk yang ada di sisi kiri dan kanan titik desimal).

Argumen kedua menentukan skala 0 , yang berarti tidak ada angka desimal di sebelah kanan tempat desimal.

Anda dapat menjalankan kueri berikut untuk menemukan tingkat presisi yang saat ini disetel di server Anda:

SELECT @@MAX_PRECISION AS [Max Precision];

Inilah hasilnya di sistem saya:

+-----------------+
| Max Precision   |
|-----------------|
| 38              |
+-----------------+

Membuat Kolom Identitas

Anda dapat membuat kolom identitas dengan menggunakan IDENTITY() properti di CREATE TABLE atau ALTER TABLE penyataan.

Cara lain untuk membuat kolom identitas adalah IDENTITY() fungsi. Ini memungkinkan Anda membuat kolom identitas saat menggunakan SELECT INTO pernyataan untuk mentransfer data dari satu sumber ke sumber lainnya.

Perbedaan dengan @@IDENTITY dan SCOPE_IDENTITY()

IDENT_CURRENT() fungsinya mirip dengan @@IDENTITY dan SCOPE_IDENTITY() , tetapi ada beberapa perbedaan.

@@IDENTITY dan SCOPE_IDENTITY() kembalikan nilai identitas terakhir yang dihasilkan di apa saja tabel di sesi saat ini. Namun, perbedaan antara kedua fungsi ini adalah SCOPE_IDENTITY mengembalikan nilai hanya dalam cakupan saat ini, sedangkan @@IDENTITY tidak terbatas pada lingkup tertentu.

IDENT_CURRENT() di sisi lain, tidak dibatasi oleh ruang lingkup atau sidang. Sebaliknya, itu terbatas pada tabel yang ditentukan . Ini mengembalikan nilai identitas yang dihasilkan untuk tabel tertentu dalam sesi apa pun dan cakupan apa pun.

Lihat IDENT_CURRENT vs @@IDENTITY vs SCOPE_IDENTITY di SQL Server:Apa Perbedaannya? untuk contoh sederhana yang membahas 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. Skrip semua data dari database SQL Server

  2. Konversi 'datetime2' menjadi 'datetimeoffset' di SQL Server (Contoh T-SQL)

  3. SQL Server Karakter Escape Pencarian Teks Lengkap?

  4. Mengapa SQL Server mengabaikan ruang kosong di akhir secara otomatis?

  5. SQL Server UNTUK XML Path membuat node berulang