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()
insert into Urunler Values ('USB Bellek2') declare @id int set @id = SCOPE_IDENTITY()
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()
Başka bir yazıda görüşmek üzere.
Teşekkürler Ahmet Bey.