Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Belirli bir tablo veya görünüm için oluşturulan son kimlik değerini döndürür. Üretilen son kimlik değeri herhangi bir oturum ve herhangi bir kapsam için olabilir.
Transact-SQL söz dizimi kuralları
Sözdizimi
IDENT_CURRENT( 'table_or_view' )
Arguments
table_or_view
Kimlik değeri geri dönen tablo veya görünümün adıdır.
table_or_viewvarchar'dır, varsayılan yoktur.
Dönüş Türleri
numeric(@@MAXPRECISION,0))
Exceptions
Hata durumunda veya çağıranın nesneyi görüntüleme izni yoksa NULL döndürür.
SQL Server'da bir kullanıcı yalnızca kullanıcının sahip olduğu veya kullanıcıya izin verilen güvenli hale getirilebilir öğeler meta verilerini görüntüleyebilir. Bu, IDENT_CURRENT gibi meta veri yayan, yerleşik fonksiyonların, kullanıcının nesne üzerinde herhangi bir izni yoksa NULL döndürebileceği anlamına gelir. Daha fazla bilgi için bkz. meta veri görünürlüğü yapılandırması .
Açıklamalar
IDENT_CURRENT, SQL Server 2000 (8.x) kimlik fonksiyonları SCOPE_IDENTITY ve @@IDENTITY'a benzer. Üç fonksiyonun tamamı da son oluşturulan kimlik değerlerini döndürür. Ancak, bu fonksiyonların her birinde sonuncunun tanımlandığı kapsam ve oturum farklılık gösterir:
- IDENT_CURRENT, herhangi bir oturumda ve herhangi bir kapsamda belirli bir tablo için oluşturulan son kimlik değerini döndürür.
- @@IDENTITY, mevcut oturumdaki herhangi bir tablo için tüm alanlarda oluşturulan son kimlik değerini döndürür.
- SCOPE_IDENTITY, mevcut oturumdaki herhangi bir tablo ve mevcut kapsam için oluşturulan son kimlik değerini döndürür.
IDENT_CURRENT değeri NULL olduğunda (çünkü tablo hiç satır içermemiş veya kısaltılmıştır), IDENT_CURRENT fonksiyonu tohum değerini döndürür.
Başarısız ifadeler ve işlemler, bir tablonun mevcut kimliğini değiştirebilir ve kimlik sütunu değerlerinde boşluklar yaratabilir. Kimlik değeri, değeri tabloya eklemeye çalışan işlem belirlenmemiş olsa bile asla geri alınmaz. Örneğin, bir INSERT ifadesi IGNORE_DUP_KEY ihlali nedeniyle başarısız olursa, tablonun mevcut kimlik değeri yine artırılır.
Birleştirmeleri içeren bir görünümde IDENT_CURRENT kullanıldığında, NULL döner. Bu, sadece bir veya birden fazla birleşik tablonun Identity sütununa sahip olup olmamasından bağımsızdır.
Önemli
Bir sonraki oluşturulan kimlik değerini tahmin etmek için IDENT_CURRENT kullanırken dikkatli olun. Gerçek oluşturulan değer, diğer oturumlar tarafından yapılan eklemeler nedeniyle IDENT_CURRENT artı IDENT_INCR'dan farklı olabilir.
Örnekler
A. Belirlenmiş bir tablo için oluşturulan son kimlik değerini döndürmek
Aşağıdaki örnek, veritabanında tablo Person.Address için oluşturulan AdventureWorks2025 son kimlik değerini döndürür.
USE AdventureWorks2022;
GO
SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity;
GO
B. IDENT_CURRENT, @@IDENTITY ve SCOPE_IDENTITY tarafından verilen kimlik değerlerinin karşılaştırılması
Aşağıdaki örnek, , IDENT_CURRENT, ve @@IDENTITYile SCOPE_IDENTITYdöndürülen farklı kimlik değerlerini gösterir.
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.*/
Ayrıca Bkz.
@@IDENTITY (Transact-SQL)
SCOPE_IDENTITY (Transact-SQL)
IDENT_INCR (Transact-SQL)
IDENT_SEED (Transact-SQL)
İfadeler (Transact-SQL)
Sistem İşlevleri (Transact-SQL)