SORU
17 AĞUSTOS 2008, Pazar


Insert Update SQL Server üzerinde saklı proc

Eğer bir kayıt varsa, bir güncelleme yapacak bir saklı proc yazdım, başka bir ekleme yapacaktır. Şöyle bir şey:

update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)

Bu şekilde yazmaya arkasındaki mantık güncelleme where örtülü seçeneğini kullanarak yapacak ve eğer 0 dönerse o zaman Ekle gerçekleşecek.

Bunu bu şekilde yapmak için bir alternatif seçin ve sonra da bir satır güncelleştirme veya ekleme yapmak döndü sayısına bağlı olacaktır. Ben bunu yapmak eğer 2 neden olacak bir güncelleme seçer çünkü verimsiz (ilk açık ara seçeneğini seçin ve ikinci güncellemenin nerede, örtülü) olarak kabul edilir. Eğer proc bir ekleme yapmak olsaydı o zaman verimlilik farkı kalmazdı.

Benim mantığım burada ses? Bir ekleme birleştirin ve bir saklı yordam içine update istiyorsunuz?

CEVAP
11 EKİM 2008, CUMARTESİ


Lütfen okuyun kullanabileceğiniz güvenli bir model için post on my blog. Konularla ilgili bir yeri vardır, ve bu soru kabul cevabı güvenli olmaktan çok uzak.

Hızlı bir cevap için aşağıdaki desen deneyin. İyi 2000 ve üzeri SQL üzerinde çalışacak. Hata diğer seçenekleri açar taşınmasını sağlar ve 2008 SQL 2005 bir BİRLEŞTİRME emrini verir.

begin tran
   update t with (serializable)
   set hitCount = hitCount   1
   where pk = @id
   if @@rowcount = 0
   begin
      insert t (pk, hitCount)
      values (@id,1)
   end
commit tran

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly

    Elly

    3 EKİM 2005
  • POGProductionz

    POGProductio

    27 NİSAN 2012
  • RaverX DouBle StAg XI

    RaverX DouBl

    23 Mayıs 2008