2010-02-23 15 views
5

derby koşullu ifadeleri desteklemiyor gibi görünüyor [IF]. Derby'de nasılderby'de koşullu ifadeler

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

yazıyoruz? Derby de mysql'in yerine 'sahip değildir.

Not: mysql için [yani üretim mysql kullanacak ve birim-test derbi kullanacak] için birim test değiştirmesi olarak derby kullanıyorum.

cevap

2

http://db.apache.org/derby/docs/10.2/ref/rrefcasenullif.html#rrefcasenullif nedir? Bunun işe yarayacağını ancak bir başlangıç ​​gibi görünüyor eğer hiçbir fikrim yok

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

:

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

Böylece belki gibi bir şey deneyebilirsiniz. İyi şanslar!

düzenleme: Bu şeylerden birkaçını denedikten sonra ... Bunun gerçekten size yardımcı olup olmayacağını bilmiyorum. SELECT ve INSERT arasında geçiş yapabilirsiniz gibi görünmüyor; Bir veya diğeri olmalı ve CASE içeri girer. Ne yapmak istersin ya da olmayabilir ...

+0

Bu işe yaramayacaktır. Hatalı şekilde belgelenen Derby DB, bu CASE deyiminin yalnızca başka bir SQL'in bir parçası olarak kullanılabileceğinden söz etmemektedir. SEÇ. Örneğin , SEC vaka sayısı, (*) 1, daha sonra 10 ELSE 20

uç – Andreas