2010-02-23 8 views
5

Il semble que derby ne supporte pas les instructions conditionnelles [IF]. Comment écrireinstructions conditionnelles dans derby

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

dans derby? Derby n'a pas non plus de 'replace into' de mysql.

Note: J'utilise derby comme remplacement d'unité pour mysql [c'est la production qui utilisera mysql et unit-test utilisera derby].

Répondre

2

Qu'en est-il de 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 

Alors peut-être que vous pouvez essayer quelque chose comme:

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

Je ne sais pas si cela fonctionnerait, mais il semble comme un début. Bonne chance!

edit: Après avoir essayé quelques-unes de ces choses ... je ne sais pas si cela va vraiment vous aider. Il ne semble pas que vous puissiez tirer entre SELECT et INSERT; ça doit être l'un ou l'autre et le CAS va à l'intérieur. Ce que vous voulez faire peut ou peut ne pas être possible ...

+0

Cela ne fonctionnera pas. La base de données Derby, mal documentée, ne mentionne pas que la clause CASE ne peut être utilisée que dans le cadre d'une autre clause SQL, par ex. SÉLECTIONNER. Par exemple, SELECT COUNT CASE (*) QUAND 1 ALORS 10 ELSE 20 FIN DE

Andreas

Questions connexes