Share via


IDENT_CURRENT (Transact-SQL)

Belirtilen tablo ya da görünüm için oluşturulan son kimlik deerini döndürür.Oluşturulan son kimlik değeri herhangi oturum ve herhangi bir kapsamiçin olabilir.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

IDENT_CURRENT( 'table_name' )

Bağımsız değişkenler

  • table_name
    Kimlik değeri döndürülür tablo adıdır.table_nameİş varchar, ile hiçbir varsayılan.

Dönüş Türleri

numeric(38,0)

Kural dışı durumlar

Hata null veya arayan bir nesneyi görüntüleme iznine sahip olmadığında verir.

De SQL Server, kullanıcı yalnızca, kullanıcının sahip olduğu veya, kullanıcı verildi güvenli hale Getirilebilenler meta veriler görüntülemeizni.Yani o meta veriler-yayma, yerleşik işlevler gibi IDENT_CURRENT kullanıcı nesnesinde herhangi bir izni yoksa null döndürebilir.Daha fazla bilgi için, bkz. Meta veri görünürlük yapılandırma ve Meta veri görünürlük sorun giderme.

Açıklamalar

IDENT_CURRENT benzer SQL Server 2000 kimlik işlevleri SCOPE_IDENTITY ve @@ kimliği.Tüm üç işlevi son oluşturulan kimlik değerlerini döndürür.Ancak, kapsam ve oturum Son bu işlevleri tanımlandığı farklılık gösterir:

  • IDENT_CURRENT tüm oturum ve herhangi bir kapsamiçindeki belirli bir tablo için oluşturulan son kimlik deerini döndürür.

  • @@ IDENTITY herhangi bir tablo geçerli oturumiçin tüm kapsamları genelinde oluşturulan son kimlik deerini döndürür.

  • SCOPE_IDENTITY herhangi bir tablo geçerli oturum ve geçerli kapsamiçin oluşturulan son kimlik deerini döndürür.

Zaman ( tablo satırları asla bulunan veya kesildi) IDENT_CURRENT değeri null olduğundan, IDENT_CURRENT işlev tohum değerini verir.

Başarısız ifadeler ve hareketleri, bir tablo için geçerli kimlik değiştirmek ve boşluklar kimlik sütun değerleri oluşturun.Kimlik değerini geri tablo değeri eklemeye çalıştığınız işlem tamamlanmış olmasa asla döndürülür.Örneğin, bir INSERT deyim IGNORE_DUP_KEY ihlali nedeniyle başarısız olursa, tablo için geçerli kimlik değerini hala artırılır.

Sonraki oluşturulan kimlik değerini öngörmek için IDENT_CURRENT kullanırken dikkatli olun.Diğer oturumlar tarafından gerçekleştirilen eklemeler nedeniyle gerçek üretilen değer IDENT_CURRENT artı IDENT_INCR ' farklı olabilir.

Örnekler

A.Belirtilen tabloiçin oluşturulan son kimlik değeri döndüren

Aşağıdaki örnek için oluşturulan son kimlik deerini döndürür Person.Address tablo AdventureWorks2008R2 veritabanı.

USE AdventureWorks2008R2;
GO
SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity;
GO

B.IDENT_CURRENT, @@ IDENTITY ve SCOPE_IDENTITY döndürülen kimlik değerleri karşılaştırma

Aşağıdaki örnek tarafından döndürülen farklı kimlik değerlerini gösterir IDENT_CURRENT, @@IDENTITY, ve SCOPE_IDENTITY.

USE AdventureWorks2008R2;
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.*/