代码之家  ›  专栏  ›  技术社区  ›  Fakrudeen

derby中的条件语句

  •  6
  • Fakrudeen  · 技术社区  · 14 年前

    看起来像 derby 不支持条件语句[如果]。我们怎么写

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

    注意:我使用derby作为mysql的单元测试替代品[即产品将使用mysql,单元测试将使用derby]。

    2 回复  |  直到 14 年前
        1
  •  2
  •   lampShaded    13 年前

    那怎么办 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
    

    我不知道这是否可行,但这似乎是个开始。祝你好运!

    编辑:

        2
  •  1
  •   Luis Daniel Mesa Velasquez perissf    6 年前

    我知道这可能太晚了,但万一有人还在找:

    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', ...)