Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Fungsi IDENT_CURRENT sistem mengembalikan nilai identitas terakhir yang dihasilkan untuk tabel atau tampilan tertentu. Nilai identitas terakhir yang dihasilkan dapat untuk sesi apa pun dan cakupan apa pun.
Sintaks
IDENT_CURRENT( 'table_or_view' )
Argumen
table_or_view
Nama tabel atau tampilan yang nilai identitasnya dikembalikan. table_or_view adalah varchar, tanpa default.
Tipe pengembalian
numerik(@@MAXPRECISION,0))
Pengecualian
NULL Mengembalikan kesalahan atau jika penelepon tidak memiliki izin untuk melihat objek.
Di SQL Server, pengguna hanya dapat melihat metadata dari securables yang dimiliki pengguna atau tempat pengguna telah diberikan izin. Ini berarti fungsi bawaan yang memancarkan metadata seperti dapat IDENT_CURRENT dikembalikan NULL jika pengguna tidak memiliki izin pada objek tersebut. Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.
Keterangan
IDENT_CURRENTmirip dengan fungsi SCOPE_IDENTITY identitas SQL Server 2000 (8.x) dan @@IDENTITY. Ketiga fungsi mengembalikan nilai identitas yang dihasilkan terakhir. Namun, cakupan dan sesi di mana terakhir didefinisikan dalam masing-masing fungsi ini berbeda:
-
IDENT_CURRENTMengembalikan nilai identitas terakhir yang dihasilkan untuk tabel tertentu dalam setiap sesi dan cakupan apa pun. -
@@IDENTITYMengembalikan nilai identitas terakhir yang dihasilkan untuk tabel mana pun dalam sesi saat ini, di semua cakupan. -
SCOPE_IDENTITYMengembalikan nilai identitas terakhir yang dihasilkan untuk tabel apa pun dalam sesi saat ini dan cakupan saat ini.
Ketika IDENT_CURRENT nilai tersebut ( NULL karena tabel tidak pernah berisi baris atau telah dipotong), fungsi mengembalikan IDENT_CURRENT nilai benih.
Pernyataan dan transaksi yang gagal dapat mengubah identitas saat ini untuk tabel dan membuat celah dalam nilai kolom identitas. Nilai identitas tidak pernah digulung balik meskipun transaksi yang mencoba memasukkan nilai ke dalam tabel tidak dilakukan. Misalnya, jika INSERT pernyataan gagal karena IGNORE_DUP_KEY pelanggaran, nilai identitas saat ini untuk tabel masih dinaikkan.
Saat digunakan IDENT_CURRENT pada tampilan yang berisi join, dikembalikan. NULL Ini terlepas dari apakah hanya satu atau lebih dari satu tabel yang bergabung memiliki kolom Identitas.
Penting
Berhati-hatilah saat memprediksi IDENT_CURRENT nilai identitas berikutnya yang dihasilkan. Nilai yang dihasilkan secara aktual bisa berbeda dari IDENT_CURRENT plus IDENT_INCR karena sisipan yang dilakukan oleh sesi lain.
Fungsi ini IDENT_CURRENT tidak tersedia untuk kolom identitas di Fabric Data Warehouse.
Contoh
J. Mengembalikan nilai identitas terakhir yang dihasilkan untuk tabel tertentu
Contoh berikut mengembalikan nilai identitas terakhir yang dihasilkan untuk Person.Address tabel dalam AdventureWorks2025 database.
USE AdventureWorks2022;
GO
SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity;
GO
B. Bandingkan nilai identitas yang dikirimkan oleh IDENT_CURRENT, @@IDENTITY , dan SCOPE_IDENTITY
Contoh berikut menunjukkan berbagai nilai identitas yang dikembalikan oleh IDENT_CURRENT, , @@IDENTITYdan SCOPE_IDENTITY.
USE AdventureWorks2022;
GO
IF OBJECT_ID(N't6', N'U') IS NOT NULL
DROP TABLE t6;
GO
IF OBJECT_ID(N't7', N'U') IS NOT NULL
DROP TABLE t7;
GO
CREATE TABLE t6(id INT IDENTITY);
CREATE TABLE t7(id INT IDENTITY(100,1));
GO
CREATE TRIGGER t6ins ON t6 FOR INSERT
AS
BEGIN
INSERT t7 DEFAULT VALUES
END;
GO
--End of trigger definition
SELECT id FROM t6;
--IDs empty.
SELECT id FROM t7;
--ID is empty.
--Do the following in Session 1
INSERT t6 DEFAULT VALUES;
SELECT @@IDENTITY;
/*Returns the value 100. This was inserted by the trigger.*/
SELECT SCOPE_IDENTITY();
/* Returns the value 1. This was inserted by the
INSERT statement two statements before this query.*/
SELECT IDENT_CURRENT('t7');
/* Returns value inserted into t7, that is in the trigger.*/
SELECT IDENT_CURRENT('t6');
/* Returns value inserted into t6. This was the INSERT statement four statements before this query.*/
-- Do the following in Session 2.
SELECT @@IDENTITY;
/* Returns NULL because there has been no INSERT action
up to this point in this session.*/
SELECT SCOPE_IDENTITY();
/* Returns NULL because there has been no INSERT action
up to this point in this scope in this session.*/
SELECT IDENT_CURRENT('t7');
/* Returns the last value inserted into t7.*/