SORU
20 EYLÜL 2008, CUMARTESİ


SQL Server üzerinde INSERT VEYA UPDATE için çözümler

MyTable(KEY, datafield1, datafield2...) bir tablo yapısı varsayalım.

Genellikle, eğer öyle olsaydı zaten varolan bir kaydı güncelleştirmek veya yeni bir kayıt eklemek istiyorum.

Aslında:

IF (key exists)
  run update command
ELSE
  run insert command

Bu yazmak için en iyi performans gösteren yolu nedir?

CEVAP
28 EKİM 2008, Salı


Benim detailed answer to a very similar previous question bkz

@Beau Crawford's Eğer rep verme varsa first guy to SO it gitmeli ama SQL 2005 yılında iyi bir şekilde ve aşağıda. Tek sorun ekler için hala iki IO işlemleri.

MS Sql2008 tanıtır SQL merge: 2003 standardı:

merge tablename as target
using (values ('new value', 'different value'))
    as source (field1, field2)
    on target.idfield = 7
when matched then
    update
    set field1 = source.field1,
        field2 = source.field2,
        ...
when not matched then
    insert ( idfield, field1, field2, ... )
    values ( 7,  source.field1, source.field2, ... )

Şimdi gerçekten sadece bir IO işlemi, ama kötü kod :-(

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • Google Chrome

    Google Chrom

    1 EYLÜL 2008
  • TecnoTutosPC

    TecnoTutosPC

    19 Kasım 2012