Java 关于插入HSQLDB的更新

Java 关于插入HSQLDB的更新,java,sql,hsqldb,Java,Sql,Hsqldb,我试图重写代码,使用MySQL数据库,使用HSQLDB。我有一个插入到。。。在重复密钥更新时查询。HSQLDB是否有此方法的替代方法 代码: 不是根据。但是,该语句可能会执行您想要的操作。以下是一个未经测试的示例,它基于合并的文档: MERGE INTO user_stats USING (VALUES(?, ?, ?, ?)) AS vals(user, balance, kills, level) ON user_stats.user = vals.user WHEN MAT

我试图重写代码,使用MySQL数据库,使用HSQLDB。我有一个
插入到。。。在重复密钥更新时
查询。HSQLDB是否有此方法的替代方法

代码:

不是根据。但是,该语句可能会执行您想要的操作。以下是一个未经测试的示例,它基于
合并
的文档:

MERGE INTO user_stats USING (VALUES(?, ?, ?, ?))
    AS vals(user, balance, kills, level) ON user_stats.user = vals.user
    WHEN MATCHED THEN UPDATE SET user_stats.balance = vals.balance, user_stats.kills = vals.kills, user_stats.level = vals.level
    WHEN NOT MATCHED THEN INSERT VALUES vals.user, vals.balance, vals.kills, vals.level
从版本2.3.3(2015年6月)开始,HSQLDB支持
插入到。。。在MYS兼容模式下的重复密钥更新…

参考:


但是版本2.3.3不支持MySQL的
值(列名)
方法。

使用{{{collide condition}}上的{{Values section}}合并到{{tablename}中,匹配时更新集{UPDATE fields},不匹配时插入值{{add fields}合并的语法正确吗?我展示了一个示例,并提供了一个指向文档的链接。我从未使用过HSQLDB,也没有测试环境。那部分你得自己做。
MERGE INTO user_stats USING (VALUES(?, ?, ?, ?))
    AS vals(user, balance, kills, level) ON user_stats.user = vals.user
    WHEN MATCHED THEN UPDATE SET user_stats.balance = vals.balance, user_stats.kills = vals.kills, user_stats.level = vals.level
    WHEN NOT MATCHED THEN INSERT VALUES vals.user, vals.balance, vals.kills, vals.level