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ı
@@IDENTITY son eklenen kimlik değerini döndüren bir sistem fonksiyonudur.
Transact-SQL söz dizimi kuralları
Sözdizimi
@@IDENTITY
Dönüş türleri
numeric(38,0)
Açıklamalar
Bir INSERT, SELECT INTO, veya toplu kopyalama ifadesi tamamlandıktan sonra, @@IDENTITY ifadenin oluşturduğu son kimlik değerini içerir.
- Eğer ifade kimlik sütunlu tabloları etkilemiyorsa,
@@IDENTITYdönerNULL. - Birden fazla satır eklendiğinde ve birden fazla kimlik değeri üretilirse,
@@IDENTITYoluşturulan son kimlik değeri döner. - Eğer ifade bir veya birden fazla tetikleyiciyi tetiklerse, özdeşlik değerleri üreten eklemeleri gerçekleştirirse, hemen ardından çağrı
@@IDENTITYtetikleyiciler tarafından üretilen son kimlik değerini döndürür. - Eğer bir tetikleyici, bir kimlik sütunu olan bir tabloda bir ekleme eyleminden sonra tetiklenirse ve tetikleyici kimlik sütunu olmayan başka bir tabloya eklenirse,
@@IDENTITYilk eklemenin kimlik değerini döndürür. EğerINSERTorSELECT INTOifadesi veya toplu kopya başarısız olursa veya işlem geri alınırsa değer@@IDENTITYönceki bir ayara geri dönmez.
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 bir ihlal nedeniyle IGNORE_DUP_KEY başarısız olursa, tablonun mevcut kimlik değeri hâlâ artırılır.
@@IDENTITY, SCOPE_IDENTITY, ve IDENT_CURRENT benzer fonksiyonlardır çünkü hepsi tablonun sütununa eklenen IDENTITY son değeri döndürür.
@@IDENTITYveSCOPE_IDENTITYmevcut oturumdaki herhangi bir tabloda oluşturulan son kimlik değerini döndürür. Ancak,SCOPE_IDENTITYdeğeri yalnızca mevcut kapsam içinde döndürür;@@IDENTITYbelirli bir kapsamla sınırlı değildir.IDENT_CURRENTkapsam ve oturumla sınırlı değildir; belirli bir tabloyla sınırlıdır.IDENT_CURRENTherhangi bir oturumda ve herhangi bir kapsamda belirli bir tablo için oluşturulan kimlik değerini döndürür. Daha fazla bilgi için bkz. IDENT_CURRENT (Transact-SQL).
Fonksiyonun @@IDENTITY kapsamı, yürütüldiği yerel sunucudaki güncel oturumdur. Bu fonksiyon uzak veya bağlı sunuculara uygulanamaz. Farklı bir sunucuda bir kimlik değeri elde etmek için, o uzak veya bağlı sunucuda depolanmış bir prosedür çalıştırın ve o saklanan prosedür (uzak veya bağlı sunucu bağlamında yürütülüyor) kimlik değerini toplayarak yerel sunucudaki çağrı bağlantısına geri gönderin.
Çoğaltma @@IDENTITY , değeri etkileyebilir, çünkü bu değer replikasyon tetikleyicileri ve depolanan prosedürler içinde kullanılır.
@@IDENTITY sütun bir çoğaltma makalesinin parçasıysa, en son kullanıcı tarafından oluşturulan kimliğin güvenilir bir göstergesi değildir.
SCOPE_IDENTITY() Fonksiyon sözdizimi yerine @@IDENTITYkullanabilirsiniz. Daha fazla bilgi için bkz. SCOPE_IDENTITY (Transact-SQL)
Uyarı
Çağrılan depolanmış prosedür veya Transact-SQL ifadesi, o kullanıcı ifadesi kapsamında kullanılan en son kimliği döndüren fonksiyonu kullanacak şekilde yeniden yazılmalıdır SCOPE_IDENTITY() ; bu da çoğaltma ile kullanılan iç içe tetikleyicinin kapsamındaki kimliği değil.
Örnekler
Aşağıdaki örnek, bir kimlik sütunuylaLocationID () bir satır ekler ve yeni satırda kullanılan kimlik değerini göstermek için kullanılır @@IDENTITY .
USE AdventureWorks2022;
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