2010-02-23 23 views
5

Es sieht aus wie derby unterstützt bedingte Anweisungen [IF] nicht. Wie schreiben wirbedingte Anweisungen in Derby

if exists (select 1 from customers where name='somename') 
    update customers ... 
else 
    insert into customers ... 

in derby? Derby hat auch nicht mysql in mysql ersetzen.

Hinweis: Ich benutze Derby als Unit-Testing-Ersatz für mysql [das ist Produktion wird MySQL verwenden und Unit-Test wird Derby verwenden].

Antwort

2

Was ist mit http://db.apache.org/derby/docs/10.2/ref/rrefcasenullif.html#rrefcasenullif?

CASE 
     WHEN 1 = 2 THEN 3 
     WHEN 4 = 5 THEN 6 
     ELSE 7 
    END 

Vielleicht können Sie so etwas wie versuchen:

CASE 
WHEN select 1 from customers where name='somename' = 1 THEN update... 
ELSE insert... 
END 

Ich habe keine Ahnung, ob das funktionieren würde, aber es scheint wie ein Anfang. Viel Glück!

bearbeiten: Nachdem Sie ein paar dieser Dinge ausprobiert ... Ich weiß nicht, ob dies Ihnen wirklich helfen wird. Es scheint nicht so, als könnten Sie zwischen SELECT und INSERT wechseln; es muss das eine oder das andere sein und der CASE geht hinein. Was Sie tun möchten, kann oder kann nicht möglich sein ...

+0

Dies wird nicht funktionieren. Schlecht dokumentierte Derby DB erwähnt nicht, dass die CASE-Klausel nur als Teil einer anderen SQL-Klausel verwendet werden kann, z. WÄHLEN. Zum Beispiel SELECT CASE COUNT (*), wenn 1 THEN ELSE 10 20 END FROM

WHERE Andreas

Verwandte Themen