Ident_current (Transact-SQL)
Belirtilen tablo veya Görünüm için oluşturulan son kimlik değerini döndürür.Oluşturulan son kimlik değeri herhangi oturum ve herhangi bir kapsam için olabilir.
IDENT_CURRENT( 'table_name' )
Bağımsız değişkenler
- table_name
Is the name of the table whose identity value is returned.table_name is varchar, with no default.
Dönüş Türleri
numeric(38,0)
Exceptions
Arayanı nesneyi görüntüleme iznine sahip değil, hata NULL veya'ı verir.
Içinde SQL Server, bir kullanıcı, yalnızca kullanıcının sahip olduğu veya kullanıcı izni verilmiş securables meta veriler görüntüleyebilirsiniz. Bu, kullanıcı nesnesi üzerinde herhangi bir izin yoksa ıdent_current NULL döndürebilir gibi meta veriler verilirken, yerleşik çalışmasını anlamına gelir.Daha fazla bilgi için bkz: Meta veriler görünürlük yapılandırma ve Meta veriler görünürlük sorun giderme.
Remarks
ıdent_current benzer SQL Server 2000 kimlik işlevler SCOPE_IDENTITY ve @@ IDENTITY. Tüm üç işlevi, en son oluşturulan kimlik değerleri döndürürler.Ancak, kapsam ve oturum, Son bu işlevlerin her tanımlanan farklı:
Son kimlik değeri belirli bir tablo için herhangi oturum ve herhangi bir kapsam içinde oluşturulan ıdent_current döndürür.
@@ IDENTITY için oluşturulan son kimlik değerini döndürür tablo geçerli oturumdaki tüm kapsamlar üzerinde.
SCOPE_IDENTITY geçerli oturum ve geçerli kapsam içinde herhangi bir tablo için oluşturulan son kimlik değerini verir.
Zaman (tablo hiç satır bulunan veya kesildi) ıdent_current değeri NULL olduğundan, ıdent_current işlev çekirdek değerini verir.
Başarısız deyimleri ve işlemler, bir tablo için geçerli kimlik değiştirebilir ve kimliğini boşluklar sütun değerlerini oluşturun.Geri hareket değeri tabloya eklemek için kaydedilmiş olmadığı halde kimlik değeri hiçbir zaman 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ğeri hala artırılır.
Sonraki oluşturulan kimlik değer tahmin etmek ıdent_current kullanarak dikkatli olun.Diğer oturumlara tarafından gerçekleştirilen eklenenleri nedeniyle oluşturulan gerçek değerini ıdent_current artı IDENTITY_INCR ' farklı olabilir.
Örnekler
C.Belirtilen tablo için oluşturulan kimlik son değer döndürülüyor
Aşağıdaki örnek, son için oluşturulan kimlik değerini döndürür Person.Address ' de tablo AdventureWorks Veritabanı.
USE AdventureWorks;
GO
SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity;
GO
b.Kimlik değerlerini ıdent_current, @@ IDENTITY ve SCOPE_IDENTITY karşılaştırma
Aşağıdaki örnek, döndürülen farklı kimlik değerleri gösterir. IDENT_CURRENT, @@IDENTITY, ve SCOPE_IDENTITY.
USE AdventureWorks;
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;
--id is 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.*/