看起来derby不支持条件语句 [IF]。我们怎么写
if exists (select 1 from customers where name='somename')
update customers ...
else
insert into customers ...
在德比?Derby 也没有 mysql 的“替换为”。
注意:我使用 derby 作为 mysql 的单元测试替代品 [即生产将使用 mysql,而单元测试将使用 derby]。
那么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 进入其中。你想做的事情可能会也可能不会......
我知道这可能为时已晚,但万一有人还在寻找它:
合并
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', ...)