@@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
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.
Alma istemi tümleşik windows kimlik do...
Diğer hizmetlerden gelen istekleri kim...
Alma "geçerli bir imza Bir kimlik...
SQL Kimlik (Otomatik Sayı) bir Hareket...
ASP.NET MVC - Active Directory karşı k...