SCOPE_IDENTITY yerine kimlik @@ kullanarak Nedeni

oy
11

bir SQL Server 2005 veritabanı üzerinde bizim uzak geliştiricilerinden biri sadece @@ kimliğini seçmek için seçme SCOPE_IDENTITY değişti bir saklı yordam bir değişiklik kontrol etti. Eğer SCOPE_IDENTITY üzerinde kimliğini @@ kullanmayı tercih ediyorum neden herhangi nedenlerden biliyor musunuz?

Oluştur 09/12/2008 saat 18:11
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
18

@@IDENTITYgeçerli oturum tarafından verilen son kimlik değerini döndürecektir. SCOPE_IDENTITY()geçerli oturum ve aynı kapsamda son kimlik değeri döndürür. Bunlar genellikle aynıdır, ama sadece şimdiki deyimi önce bir yerde bir şey takılı çağrılan bir tetikleyici varsayalım. @@IDENTITYtarafından kimlik değerini dönecektir INSERT IGNORE tetik değil, bloğun insert deyimi tablosuna. O ne yaptığını bilir sürece Genellikle bir hata.

Cevap 09/12/2008 saat 18:17
kaynak kullanıcı

oy
12

İşte bir bağlantı onları ayırt edilmesine yardımcı olabilir

şöyle görünür:

  • KİMLİK - bağlantıda son kimlik
  • SCOPE_IDENTITY - Açıkça oluşturulan son kimlik (hariçtir tetikler)
  • IDENT_CURRENT ( 'TabloAdı') - bakılmaksızın kapsam veya bağlantının tabloda Son Kimlik.
Cevap 09/12/2008 saat 18:20
kaynak kullanıcı

oy
2

Bir tetikleyici sonra bir satır ekledi vardı sürece, herhangi düşünmek (ya da bloklarýnýn) ve gerçekten gerçekten o tetik eklenen satırın id yerine ben fiziksel olarak değiştirildi satır istedi olamaz.

Başka bir deyişle, hayır, pek değil.

  • YASAL UYARI: Not a T-SQL uzmanı :)
Cevap 09/12/2008 saat 18:16
kaynak kullanıcı

oy
1

Belki geliştiriciye değişikliği yapmadan arkasında mantığı sormalısınız.

Cevap 09/12/2008 saat 21:48
kaynak kullanıcı

oy
0

Tetiği isteseydi başka tetikleyici eklendi alabilir kullanmak ben elde edebilirsiniz tek sebebi. Başka bir tetikleyici eklenebilir olarak Hatta daha sonra bu tehlikeli ve yine yanlış kimlik tanınacak. Ben geliştirici ne yaptığını bilmez şüpheli. Ama dürüstçe yapılacak en iyi şey o değişikliği neden ona sormaktır. Bunu geri değişebilir, ama geliştirici bir sonraki defa yakalamak olmayabilir olarak o tetik kimliğini gerekmedikçe tekrar yapmak değil bilmesi gerekir.

Cevap 09/12/2008 saat 21:44
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more