SQL SERVER @@IDENTITY, SCOPE_IDENTITY() ve IDENT_CURRENT()

SQL SERVER @@IDENTITY, SCOPE_IDENTITY() ve IDENT_CURRENT()

Sql Server yazılımını kullanırken kolonlu tablolarda Identity değerlerinin yani PrimaryKey’lerin takip edilebilmesi için 3 farklı metot vardır. Bu metotları yeni veri girişi yapıldığı zaman ID değerlerinde kayma veya bozulma olmaması için kullanırız.

  • @@IDENTITY
  • SCOPE_IDENTITY()
  • IDENT_CURRENT

Yukarıda belirtmiş olduğum 3 yöntem de aslında aynı işi yapmaktadır. Fakat işlemi gerçekleştirme yöntemleri birbirlerinden farklıdır.Metotları anlatmaya başlamadan önce Scope ve Session kavramlarının ne olduğuna bakalım.

Session: Açılan her bir Sql Server bağlantısı bir session yani oturumdur. Siz sql serverda herhangi bir veritabanına giriş yaptığınız anda o veritabanına oturum açmış yani session açmış olursunuz. Bir veritabanı üzerinde ekleme,silme yada güncelleme yaptığınız zaman bu oturumlar içerisinde bu işlemlerinizi gerçekleştirirsiniz. Her oturum içinde çok sayıda Scope’lar bulunmaktadır.

Scope:  Komutlar içerisinde birbirinden farklı scope’lar bulunmaktadır. Örneğin bir prosedür oluşturduğunuz zaman prosedürün tablo üzerinde değişim yarattığı alana scope yani etki alanı diyoruz.

@@IDENTITY

Herhangi bir  oturum/session’ da  varolan son Identity değerini almak için kullanılır. Tablolarda trigger varsa kullanılması tavsiye edilmeyen bir yöntemdir.  Eğer tabloda trigger var ise yanlış bir Identity değeri ile karşı karşıya gelebilirsiniz.

Kullanım Yöntemi: SELECT @@IDENTITY AS ID

SCOPE_IDENTITY()

Herhangi bir oturum/session ‘da ilgili scope içinde son ID değerini döndürür. Eğer tablonuzda Trigger varsa @@IDENTITY metodu yerine bu yöntemin kullanılması gerekir.

Kullanım Yöntemi:  SELECT SCOPE_IDENTITY() AS ID

IDENT_CURRENT ()

Herhangi bir session/oturum’ da herhangi bir scope için seçilen tablonun son Identity değerini karşımıza getirir.

Kullanım Yöntemi:  SELECT IDENT_CURRENT(‘tabloAdi’) as ID

Örnek Kullanım:

scopeidentity

Eğer tablomuzda Trigger yoksa USB bellek değerini eklediğimizde ID değerini 4 olarak döndürecektir. Eğer Trigger bulunuyorsa yanlış ID değerini karşımıza getirir.

Yukarıdaki örnekte olduğu gibi tabloda Trigger olsa bile , içerisinde 3 satır veri bulunan tablomuza “Fan” adında yeni bir değer eklemeye çalıştığımızda yeni değerin UrunID’sini 4 olarak karşımıza getirecektir.

Bu kullanımda Trigger olması yada olmaması hiçbir değişiklik yaratmayacağı için ID değeri karşımıza 4 değerini döndürecektir.

 

Uğur Özdemir

Bilgisayar ve teknoloji dünyası her zaman ilgimi çekmiştir. Çünkü bilişim ve teknoloji bu gün olduğu gibi gelecekte de var olmaya ve gelişmeye devam edecektir. Bu yüzden ben de bu konuda kendimi geliştirmeye ve sürekli olarak teknolojiyi yakından takip ederek bilgi düzeyimi yükseltmeye özen gösteriyorum. Bilgiye daha hızlı ulaşılması, bilgi ve belge yönetimi konularında kendimi geliştiriyorum. Katıldığım seminerler, aldığım eğitimler, öğrendiğim programlar ve yazılımlarla kendimi iş dünyasına hazırlıyorum. Edindiğim bu bilgileri kullanarak sadece iş sahibi olmak değil, yaptıklarımla bir fark yaratarak bilişim ve teknoloji dünyasına katkıda bulunmak istiyorum.

Son Yazılar
Bir cevap bırakın