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

  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009
  • kylediablo

    kylediablo

    8 Ocak 2007
  • TheDroidDemos

    TheDroidDemo

    15 ŞUBAT 2011