在德比条件语句

问题描述 投票:6回答:2

它看起来像derby不支持条件语句[IF]。我们如何写

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

在德比?德比没有“更换成” MySQL的任。

注:我使用Derby作为单元测试替换为MySQL [即生产将使用mysql和单元测试将使用德比。

database derby
2个回答
2
投票

什么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

因此,也许你可以尝试这样的:

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

我不知道是否会工作,但它似乎是一个开始。祝好运!

编辑:尝试一些的这些东西后...我不知道这是否会真正帮助你。它似乎并不像你可以解雇SELECT和INSERT之间切换;它必须是一个或另一个和CASE走了进去。你想要做什么可能或不可能...


1
投票

我知道这可能为时已晚,但在任何情况下,仍然在寻找它:

MERGE

https://issues.apache.org/jira/browse/DERBY-3155

例如:

MERGE INTO customers USING SYSIBM.SYSDUMMY1 ON customers.name='somename' WHEN MATCHED THEN UPDATE SET name = 'someothername', ... WHEN NOT MATCHED THEN INSERT(id, name, ...) VALUES (DEFAULT, 'someothername', ...)

© www.soinside.com 2019 - 2024. All rights reserved.