更新插入 HSQLDB
Update on Insert HSQLDB
我正在尝试重写使用 MySQL 数据库的代码以使用 HSQLDB。我有一个 INSERT INTO ... ON DUPLICATE KEY UPDATE
查询。 HSQLDB 是否有此方法的替代方法。
代码:
PreparedStatement ps = conn.prepareStatement("INSERT INTO user_stats "
+ "(user, balance, kills, level)"
+ " VALUES(?, ?, ?, ?) ON DUPLICATE KEY "
+ "UPDATE balance=VALUES(balance), kills=VALUES(kills), level=VALUES(level)");
ps.setString(1, playername);
ps.setDouble(2, PluginInterract.getESSBalance(playername));
ps.setInt(3, PluginInterract.getKills(playername));
ps.setDouble(4, PluginInterract.getPluginLevel(playername));
不是根据 the documentation. The MERGE
声明可能会做你想要的,但是。这是一个基于 MERGE
:
文档的未经测试的示例
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 兼容模式下支持INSERT INTO ... ON DUPLICATE KEY UPDATE ...
。
参考:http://hsqldb.org/doc/guide/guide.html#coc_compatibility_mysql
但是2.3.3版本不支持Values(COLUMN_NAME)
方法MySQL。
我正在尝试重写使用 MySQL 数据库的代码以使用 HSQLDB。我有一个 INSERT INTO ... ON DUPLICATE KEY UPDATE
查询。 HSQLDB 是否有此方法的替代方法。
代码:
PreparedStatement ps = conn.prepareStatement("INSERT INTO user_stats "
+ "(user, balance, kills, level)"
+ " VALUES(?, ?, ?, ?) ON DUPLICATE KEY "
+ "UPDATE balance=VALUES(balance), kills=VALUES(kills), level=VALUES(level)");
ps.setString(1, playername);
ps.setDouble(2, PluginInterract.getESSBalance(playername));
ps.setInt(3, PluginInterract.getKills(playername));
ps.setDouble(4, PluginInterract.getPluginLevel(playername));
不是根据 the documentation. The MERGE
声明可能会做你想要的,但是。这是一个基于 MERGE
:
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 兼容模式下支持INSERT INTO ... ON DUPLICATE KEY UPDATE ...
。
参考:http://hsqldb.org/doc/guide/guide.html#coc_compatibility_mysql
但是2.3.3版本不支持Values(COLUMN_NAME)
方法MySQL。