@@ IDENTITY (Transact-SQL)
Son eklenen kimlik değerini döndüren bir sistem işlev belirtilir.
@@IDENTITY
Dönüş Türleri
numeric(38,0)
Remarks
Bir INSERT, SELECT INTO veya toplu kopyalama deyim tamamlandıktan sonra @@ IDENTITY deyim ile oluşturulan son kimlik değerini içerir.deyim Tüm kimlik sütunları içeren tablolar etkiler mi, @@ IDENTITY NULL döndürür.Birden çok satır eklerseniz, birden çok kimlik değer oluşturma @@ IDENTITY oluşturulan son Kimlik deerini döndürür.İfade kimlik değerlerini oluşturan ekler gerçekleştiren bir veya birden çok tetikleyici harekete, en son Kimlik deerini Tetikleyiciler tarafından oluşturulan arama @@ IDENTITY hemen deyiminden döndürür.Tetikleyici üzerinde bir ekleme işlemi sonra harekete geçirilir, bir tablo kimlik sütun olan ve başka bir tetikleyici ekler tablo, kimlik sütun varsa, @@ IDENTITY ilk ekleme kimlik değerini döndürür.@@ IDENTITY değeri bir önceki INSERT veya SELECT INTO deyim veya toplu kopyalama başarısız olursa veya hareket geri alınırsa, ayarlamanın döner değil.
Başarısız ifadeleri ve hareketleri, bir tablo için geçerli kimlik değiştirebilir ve boşluklar kimlik sütun değerleri oluşturun.Kimlik değerini geri hareket, değer olarak girmek istediniz ancak hiçbir zaman alınır tablo önem vermektedir.Ö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.
@@ IDENTITY, SCOPE_IDENTITY, IDENT_CURRENT olan benzer işlevleri tümü kimlik sütun eklenir son değeri döndürmek için bir tablo.
@@ IDENTITY ve SCOPE_IDENTITY birinde oluşturulmuş en son Kimlik deerini döndürür tablo geçerli oturumda.Ancak, SCOPE_IDENTITY yalnızca geçerli kapsam içinde değerini döndürür; @@ IDENTITY belirli bir kapsam için sınırlı değildir.
Kapsam ve oturum IDENT_CURRENT sınırlıdır; belirli bir tabloya sınırlıdır.IDENT_CURRENT tüm oturumları ve tüm kapsam belirli bir tablo için oluşturulan Kimlik deerini döndürür.Daha fazla bilgi için bkz: Ident_current (Transact-SQL).
@@ IDENTITY işlev yürütülecek olan yerel sunucuda geçerli oturum kapsamıdır.Bu işlev, uzak veya bağlantılı sunucular için uygulanamaz.Farklı bir sunucudaki bir kimlik deerini elde etmek için uzak saklı yordam yürütmek veya bağlantılı sunucuya depolanmış yordamı (uzak veya bağlantılı sunucu bağlamında çalışan) sahip kimlik değerini alacak ve yerel sunucu üzerinde arama bağlantıyı geri dönün.
Çoğaltma, çoğaltmayı tetikler ve saklı yordam içinde kullanılan bu yana @@ IDENTITY değeri etkileyebilir.@@ IDENTITY sütun çoğaltma makale ise en son kullanıcı tarafından oluşturulan kimlik güvenilir bir göstergesi değil.@@ IDENTITY yerine SCOPE_IDENTITY() işlevini sözdizimini kullanabilirsiniz.Daha fazla bilgi için, bkz. SCOPE_IDENTITY (Transact-SQL)
Not
Arama saklı yordam veyaTransact-SQLdeyim gerekir yeniden kullanmak SCOPE_IDENTITY() işlev, bu kullanıcı deyiminin kapsam içinde kullanılan en son kimlik ve değil kapsamındaki çoğaltma tarafından kullanılan iç içe tetikleyici kimliği döndürür
Örnekler
Aşağıdaki örnek bir satırına ekler bir tablo kimlik sütun olan ( LocationID) ve@@IDENTITYYeni satır. kullanılan kimlik değerini görüntüleme
USE AdventureWorks;
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