2016-03-31 20 views
0

H2 dosya veritabanını kullanıyorum ve aşağıdaki sorunla karşılaşıyorum. Sanırım iki VARCHAR (255) sütunlu PROPERTIES adlı bir tablo var: NAME ve VALUE, NAME birincil anahtar. Şimdi, tabloyu yeni bir satır ile yalnızca mevcut değilse güncellemek istiyorum. Varsa, o NAME için VALUE değerini değiştirmek istemiyorum. Bu MS SQL Server söylemek kolay olurdu, ancak H2 SQL IF, VAR OLMADIĞINI GİBİ yok. MERGE adlı bir komutu var, ancak mevcut olan güncellemeler var. Bunu H2 SQL ile yapmanın bir yolu var mı?
Bu sorunun bir kopya olduğunu sanmıyorum çünkü özellikle H2 için istediğini görmedim.H2 Yalnızca satır yoksa satır ekleyiniz

+0

O nerede H2 ile exists' değil 'kullanabilirsiniz görünüyor http://stackoverflow.com/questions/19768051/h2-sql-database-insert-if-the-record-does-not-exist –

+0

Aslında benim için çalışmıyor. H2'de WHERE EXISTS kullanamazsınız. Sorguyu çalıştırmak için SQuirrel 3.6 kullanıyorum (H2 sürücüsü, h2-1.4.187) –

cevap

0

H2'ye aşina değilim, ancak "bulunmayanlar" işe yaramıyorsa, yeni değerin var olup olmadığını kontrol etme ve yalnızca almadıysa ekleme işlemine ne dersiniz?

Bu bir SQL Server örneğidir, dolayısıyla sözdizimini değiştirmeniz gerekebilir.

Insert into Properties 
(Name, Value) 
source.Newname, source.NewValue 
from Source 
where NewName 
not in (
select Name 
from Properties 
) 
; 
+0

Teşekkürler, ancak kodunuz başka bir tablodan eklemek gibi görünüyor. Sabit değerleri doğrudan tabloya ekleyebilmem gerekiyor. Kaynak nasıl doldurulur? –

+0

Değerlerden nasıl geçiyorsunuz? Değişkenler kullanıyor muyuz? Değişkenlerle "Kaynak" deyimini kaldırabilir ve NewName ve NewValue sütun değerlerini değişkenlerle değiştirebilirsiniz. – Adam

İlgili konular