ON DUPLICATE KEY语法错误

时间:2016-01-12 17:23:15

标签: java sql

我创建了一个在线投票系统,所有用户的所有投票都存储在数据库中。我想避免重复。例如,假设用户X在问题A上投票B.此信息被添加到数据库中。然后一周后,同一用户X决定在同一问题A上投票C.因此,不应在数据库中添加另一个条目,而应使用新信息更新旧条目。我尝试使用ON DUPLICATE KEY UPDATE查询,但我得到了一个相当奇怪的语法异常:

java.sql.SQLSyntaxErrorException:语法错误:遇到" ON"第1栏第53栏。

代码:

public void castVote(int id, String username, String option) {

    try {

        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        connection = DriverManager
                .getConnection("jdbc:derby:C:\\MyDB;create=true;upgrade=true");
        String query = "INSERT INTO Votes (id, username, op) " + "VALUES (?,?,?) "
                + "ON DUPLICATE KEY UPDATE " + "id = ?, username = ?, op = ?";
        preparedStatement = connection.prepareStatement(query);
        preparedStatement.setInt(1, id);
        preparedStatement.setString(2, username);
        preparedStatement.setString(3, option);
        preparedStatement.executeUpdate();

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        close();
    }
}

我必须说我对SQL语句和数据库是新手,所以也许我的查询错误。但例外是相当奇怪的

1 个答案:

答案 0 :(得分:1)

Derby没有ON DUPLICATE KEY UPDATE声明

您应该可以使用MERGE 文档here