Insert Update SQL Server üzerinde saklı proc | Netgez.com
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

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • paikimchung

    paikimchung

    12 Mayıs 2006
  • taliajoy18

    taliajoy18

    12 Temmuz 2011