2015-04-17 81 views
1

我想重寫代碼,這是使用MySQL數據庫,以使用HSQLDB。我有一個INSERT INTO ... ON DUPLICATE KEY UPDATE查詢。 HSQLDB有這種方法的替代方法嗎?更新插入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)); 

回答

1

未按the documentation。然而,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 
+0

合併到{{表名}}使用{{值部分}} ON {{相撞條件}} WHEN然後再配UPDATE SET {{更新字段}} WHEN NOT MATCHED THEN插入值{{添加字段}} 合併的語法是否正確? – user3400841

+0

我舉了一個例子,並提供了一個鏈接到文檔。我從來沒有使用HSQLDB,我沒有一個測試環境。你必須自己做這個部分。 –