Aracılığıyla paylaş


@@ IDENTITY (Transact-SQL)

Son eklenen kimlik değerini döndüren bir sistem işlev iş.

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

Sözdizimi

@@IDENTITY

Dönüş Türleri

numeric(38,0)

Açıklamalar

Sonra bir INSERT select INTO veya toplu kopyalama deyim tamamlandı, @@ IDENTITY deyimoluşturulan son kimlik değeri içerir.deyim herhangi bir tablo IDENTITY sütunları ile etkileyen değil, @@ IDENTITY null döndürür.Birden çok satır eklediyseniz, birden çok kimlik değerlerini üretmek @@ IDENTITY oluşturulan son kimlik deerini döndürür.deyim kimlik değerlerini üretmek ekler gerçekleştiren bir veya daha fazla tetikleyicileri harekete, son kimlik değeri Tetikleyiciler tarafından üretilen arama @@ IDENTITY hemen sonra deyim döndürür.Tetiği ve kimlik sütunolan bir tablo INSERT eylem , kimlik sütunolmayan başka bir tablo ekler sonra tetikleyici harekete geçirilen, @@ IDENTITY ilk INSERT kimlik değerini döndürür.@@ IDENTITY değeri bir önceki Ekle veya select INTO deyim veya toplu kopyalama başarısız olursa veya işlem geri alınır, ayarlama başlamıyor.

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.

Tüm kimlik sütun bir tabloeklenen son değeri döndürmeleri @@ IDENTITY, SCOPE_IDENTITY ve IDENT_CURRENT benzer işlevleri olduklarından.

@@ IDENTITY ve SCOPE_IDENTITY herhangi bir tablo geçerli oturumoluşturulan son kimlik deerini döndürür.Ancak, SCOPE_IDENTITY, yalnızca geçerli kapsamiçinde değerini verir; @@ IDENTITY, belirli bir kapsamsınırlı değildir.

IDENT_CURRENT, kapsam ve oturumile sınırlı değildir; Belirtilen tablosınırlıdır.IDENT_CURRENT tüm oturum ve herhangi bir kapsamiçindeki belirli bir tablo için oluşturulan kimlik değerini döndürür.Daha fazla bilgi için, bkz. IDENT_CURRENT (Transact-SQL).

@@ IDENTITY işlev kapsam yürütülecek olan yerel sunucuda geçerli oturum var.Bu işlev , uzak veya bağlantılı sunucular için uygulanamaz.(Uzaktan veya bağlantılı sunucubağlamında yürüten) o saklı yordam bir sunucuda, o uzaktan veya bağlantılı sunucu saklı yordam yürütmek bir kimlik değeri elde ve kimlik değeri toplamak ve arama bağlantısı yerel sunucuda geri dönün.

Çoğaltma, çoğaltma Tetikleyicileri ve saklı yordam içinde kullanılan bu yana @@ IDENTITY değer etkileyebilir.@@ IDENTITY sütun çoğaltma makaleparçası ise en son kullanıcı tarafından oluşturulan kimlik güvenilir bir göstergesi değil.@@ IDENTITY yerine SCOPE_IDENTITY() işlev sözdizimini kullanabilirsiniz.Daha fazla bilgi için, bkz. SCOPE_IDENTITY (Transact-SQL).

Not

saklı yordam çağıran veya Transact-SQLdeyim yayımlanması, kapsam o kullanıcı deyimiçinde kullanılan en son kimlik ve kimlik değil çoğaltmatarafından kullanılan iç içe geçmiş tetikleyici kapsam içinde döner SCOPE_IDENTITY() işlev kullanmak için.

Örnekler

Aşağıdaki örnek, bir tablo bir kimlik sütun bir satır ekler (LocationID) ve @@IDENTITY Yeni bir satır kullanılan kimlik değerini görüntülemek için

USE AdventureWorks2008R2;
GO
--Display the value of LocationID in the last row in the table.
SELECT MAX(LocationID) FROM Production.Location;
GO
INSERT INTO Production.Location (Name, CostRate, Availability, ModifiedDate)
VALUES ('Damaged Goods', 5, 2.5, GETDATE());
GO
SELECT @@IDENTITY AS 'Identity';
GO
--Display the value of LocationID of the newly inserted row.
SELECT MAX(LocationID) FROM Production.Location;
GO