29 Ekim 2010 Cuma

Son eklenen kayıtda oluşan otomatik sayıyı öğrenmek

 CREATE TABLE Table1(ID int identity(1,1), Name nvarchar(50))

 INSERT INTO @Table1(Name) VALUES('Test')

SELECT @@IDENTITY , SCOPE_IDENTITY(), IDENT_CURRENT('Table1')

Identity tanımlanmış bir alanı olan bir tabloya kayıt eklediğimizde, en son eklediğimiz kayıt ile birlikte oluşan Identity alanının değerini öğrenmek ihtiyacımız olduğunda 3 farklı yöntem kullanabiliriz.

@@IDENTITY : Son oturumda oluşan son identity numarasını döndürür. Eğer bu tablo üzerinde bir trigger olsaydı ve trigger da üzerinde identity olan bir tabloya kayıt ekliyor olsaydı, @@Identity bize, Table1 tablosuna eklediğimiz kaydın identity değerini değil, trigger da kayıt eklenen tablonun identity değerini getirecekti.

SCOPE_IDENTITY  : Adından anlaşılacağı üzere,  scope_identity fonksiyonu, mevcut oturumda ve mevcut kapsamda (scope) son oluşan identity değerini döndürür.  Table1 üzerinde trigger olsa, ve başka bir identity alanı olan bir tabloya insert yapılsa bile, Table1 ile ilgili iş yaptığımız için, Table1 üzerinde oluşan son identity değerini bize verecektir.

IDENT_CURRENT : Bu fonksiyon ise hem oturumdan, hem de kapsamdan bağımsız çalışır. Bu nedenle bir tablo adı parametresi ister. Verilen tabloda oluşmuş son identity değerini getirir.

Hiç yorum yok: