SORU
7 Ocak 2009, ÇARŞAMBA


SQLite - EKLE veya DEĞİŞTİR *UPSERT*

http://en.wikipedia.org/wiki/Upsert

Insert Update stored proc on SQL Server

Düşünce değil bu daha zekice bir yolunu SQLite bunu yapmak için var mı?

Eğer kaydı varsa, üç, dört sütun güncellemek istiyorum aslında, Varsa yoksa değil dördüncü sütun (NULL) varsayılan değeri ile kayıt EKLEMEK istiyorum.

KİMLİĞİ sadece UPSERT için bir rekor olacak yani birincil anahtar.

(Sırayla eğer GÜNCELLEME yapmam gerekiyorsa ölçüm m için SEÇİN veya açıkça EKLE) yükünü önlemek için çalışıyorum

Öneriniz var mı?

CEVAP
2 Aralık 2010, PERŞEMBE


3 sütun varsayarak tabloda ID, AD, ROL..


KÖTÜ:Bu ekleme veya KİMLİĞİ için yeni değerleri ile tüm sütunları değiştir=1:

INSERT OR REPLACE INTO Employee (id, name, role) 
  VALUES (1, 'John Foo', 'CEO');

KÖTÜ:Bu ekleme veya sütunları... ADI sütun NULL olarak ayarlanır veya varsayılan değeri 2 yerini alacak:

INSERT OR REPLACE INTO Employee (id, role) 
  VALUES (1, 'code monkey');

İYİ:Bu sütun 2 güncellenir. =1 var ID, ADI etkilenmeyecektir. =1 yok KİMLİĞİ, adı varsayılan (BOŞ) olacak.

INSERT OR REPLACE INTO Employee (id, role, name) 
  VALUES (  1, 
            'code monkey',
            (SELECT name FROM Employee WHERE id = 1)
          );

Bu sütun 2 güncellenir. =1 mevcut KİMLİĞİ, ROLÜ etkilenmeyecektir. İD=1 yok, rolü olacaktır 'Benchwarmer' varsayılan değer yerine.

INSERT OR REPLACE INTO Employee (id, name, role) 
  VALUES (  1, 
            'Susan Bar',
            COALESCE((SELECT role FROM Employee WHERE id = 1), 'Benchwarmer')
          );

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Need for Speed

    Need for Spe

    8 ŞUBAT 2006
  • NYLON Video

    NYLON Video

    11 Aralık 2006
  • TokShogun

    TokShogun

    6 HAZİRAN 2009