Kapsam ve oturum arasındaki farkı anlarsanız, bu yöntemleri anlamak çok kolay olacaktır.
Adam Anderson'ın çok güzel bir blog yazısı bu farkı anlatıyor:
Oturum , komutu yürüten geçerli bağlantı anlamına gelir.
Kapsam , bir komutun yakın bağlamı anlamına gelir. Saklanan her yordam çağrısı kendi kapsamında yürütülür ve iç içe çağrılar çağırma yordamı kapsamında iç içe bir kapsamda yürütülür. Benzer şekilde, bir uygulamadan veya SSMS'den yürütülen bir SQL komutu kendi kapsamında yürütülür ve bu komut herhangi bir tetikleyici tetiklerse, her tetikleyici kendi iç içe kapsamı içinde yürütülür.
Dolayısıyla, üç kimlik alma yöntemi arasındaki farklar aşağıdaki gibidir:
@@identity
bu oturumda oluşturulan son kimlik değerini ancak herhangi bir kapsamı döndürür .
scope_identity()
bu oturumda ve bu kapsamda üretilen son kimlik değerini döndürür .
ident_current()
belirli bir tablo için oluşturulan son kimlik değerini verir herhangi bir oturum ve herhangi bir kapsam.