首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HyperSQL -意外令牌

HyperSQL -意外令牌
EN

Stack Overflow用户
提问于 2013-09-12 09:29:14
回答 2查看 2.3K关注 0票数 0

我试图通过以下方式在我的HyperSQL应用程序中使用:

代码语言:javascript
复制
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class Main {

    static Connection conn;
    static Statement stat;

    public static void main(String[] args) {

        try {
            Class.forName("org.hsqldb.jdbc.JDBCDriver" );
        } catch (Exception ex) {
            System.out.println("An error occurred while loading HSQLDB JDBC driver: " + ex.getMessage());
            return;
        }

        try {

            conn = DriverManager.getConnection(
                    "jdbc:hsqldb:file:helper_db;sql.syntax_mys=true");

            stat = conn.createStatement();

            stat.executeUpdate(
                "CREATE TABLE IF NOT EXISTS some_table " +
                     "(" +
                        "foo TEXT PRIMARY KEY, " +
                        "bar TEXT" +
                    ");"
            );

            stat.executeUpdate(
                "INSERT INTO some_table VALUES" +
                        "('foo', 'bar') " +
                        "ON DUPLICATE KEY UPDATE some_table = VALUES" +
                        "('foo', 'bar');"
            );

        } catch (Exception ex) {

            System.out.println("An error occurred: " + ex.getMessage());
            return;

        }

    }
}

这段代码提供了以下输出:

代码语言:javascript
复制
An error occurred: unexpected token: ON

我做错了什么?如何解决这一问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-12 09:36:42

HSQLDB不支持ON DUPLICATE语法(这显然是手册中的文档)。

如果您的values子句中至少有一个列是唯一的键,则需要使用MERGE:

代码语言:javascript
复制
MERGE INTO some_table ut
USING (
  VALUES
    ('foo', 'bar')
) AS md (foo_column, bar_column) ON (ut.foo_column = md.foo_column)
WHEN MATCHED THEN UPDATE
     SET ut.bar_column = md.bar_column
WHEN NOT MATCHED THEN
  INSERT (foo_column, bar_column)
  VALUES (md.foo_column, md.bar_column);

有关详细信息,请查看手册:statement

票数 2
EN

Stack Overflow用户

发布于 2017-09-21 13:08:35

最新版本的HSQL现在支持ON DUPLICATE KEY UPDATE特性的MySQL。

参考:mysql

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18760476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档