SORU
26 Ocak 2009, PAZARTESİ


@@KİMLİK, SCOPE_IDENTITY(), alma son kimlik ÇIKTI ve diğer yöntemler

Çeşitli yöntemler ekledikten sonra birincil anahtar kimlik alanının değeri alınırken kullanılan gördüm.

declare @t table (
    id int identity primary key,
    somecol datetime default getdate()
)
insert into @t
default values

select SCOPE_IDENTITY() --returns 1
select @@IDENTITY --returns 1

Kimlik Ekle takip tablosu dönen:

Create Table #Testing (  
    id int identity,  
    somedate datetime default getdate()  
)  
insert into #Testing  
output inserted.*  
default values

Hangi yöntem doğru veya iyidir? ÇIKIŞ yöntemi güvenli kapsamı nedir?

İkinci kod parçası SQL in the Wild ödünç oldu

CEVAP
26 Ocak 2009, PAZARTESİ


Yapmak istediğin şeye bağlı...

@@KİMLİK

Son KİMLİK değeri bir bağlantı üzerinde üretilen döner, tablo ne olursa olsun, üretilen değer ve değer üreten deyimi kapsamı ne olursa olsun. @@KİMLİK son kimlik değeri döndürür geçerli oturumda bir tablo içine girdi. @@KİMLİK geçerli oturum ile sınırlıdır ve geçerli kapsam için sınırlı değildir. Örneğin, bir tetikleyici bir tablo, neden bir kimlik için oluşturulan bir tablo olur musun kimliği oluşturulmuş geçen bile oldu tetiği o yarattı.

() INSERT deyim

Son KİMLİK değeri üretilen değeri aynı kapsamda bir açıklama, tablo ne olursa olsun bir bağlantı ve üretilen verir. () INSERT deyim de geçerli kapsam için değeri sınırlar ama @@KİMLİK, benzer. Diğer bir deyişle, açıkça oluşturulan son kimlik değeri, bir tetikleyici tarafından oluşturulan herhangi bir kimlik veya bir kullanıcı tanımlı işlevi yerine dönecektir.

() IDENT_CURRENT

Son KİMLİK değeri döndürür bir tablo içinde üretilen değer ifade bağlantı ve kapsamı ne olursa olsun üretti. IDENT_CURRENT bağlantı veya kapsam tarafından belirtilen bir tablo, ama sınırlı değildir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Developers

    Android Deve

    9 Kasım 2007
  • Fuse

    Fuse

    21 Kasım 2005
  • ibebrent

    ibebrent

    23 Temmuz 2007