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

  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • Wild Academy

    Wild Academy

    8 Aralık 2009