SQL Server’da Son Kaydın ID Değerini Almak | SCOPE_IDENTITY()

Genellikle uygulamalarımızda veritabanı ile bağlantı kurarız. Veriler çeker ya da yeni kayıtlar gireriz.
Bazen bir tabloya eklediğimiz kaydın ID değerine o an ihtiyaç duyabiliriz.

Bunu türlü yollarla yapabiliriz tabikide. Mesela kayıt işleminden sonra bir select sorgusu yazıp ID Kolonuna göre ters sıralayıp en üstteki satırın ID bilgisini çekebiliriz.
Ne kadar da zahmetli 🙂
Bu hem uzun ve yorucu hem de 2 farklı transaction çalıştıran bir işlem.

Bunun yerine SCOPE_IDENTITY() kullanımına bakalım.

Yandaki gibi “Urunler” tablomuz olsun. “UrunID” identity bir kolon. “UrunAdi” ise nvarchar tipinde bir kolon.

Şimdi “USB Bellek” adında farklı bir kayıt ekleyelim. Sorgumuz eklenen kaydın ID değerini geri döndürecek. Bizim tablomuza göre “4” değerini vermeli.

insert into Urunler Values ('USB Bellek')
SELECT SCOPE_IDENTITY()

Sorgumuzu çalıştırdığımızda şöyle bir çıktı alıyor olmamız gerek;






Tabi ben sadece management üzerinde çalıştırdım bu sorguyu. Uygulama sırasında direk bu değeri çekebilirsiniz.
Ya da sorgunuzda birden fazla tabloya bu ID ile kayıt girmeniz gerekiyorsa, sorgu içerisinde bir değişkene bu değer atanabilir. Şöyleki;
insert into Urunler Values ('USB Bellek2')
declare @id int
set @id =  SCOPE_IDENTITY()
Artık “@id” değişkenini istediğiniz tabloya kayıt olarak girebilirsiniz.
Son olarak;
LinQ ya da entity framework gibi data modellerinde kullanmak için yazacağınız store procedure sonuna yani insert sorgusundan sonra “select” yerine “return” yazın.
Böylece data modelindeki metot direk olarak int değerinde ki id değerini döndürecektir. 

return SCOPE_IDENTITY()

Anlamadığınız noktalarda sorularınızı bekliyorum.
Başka bir yazıda görüşmek üzere.
Reklamlar

One comment on “SQL Server’da Son Kaydın ID Değerini Almak | SCOPE_IDENTITY()

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s