如何使用 UCanAccess 在两列上创建具有唯一约束的表?

Posted

技术标签:

【中文标题】如何使用 UCanAccess 在两列上创建具有唯一约束的表?【英文标题】:How to CREATE TABLE with unique constraint on two columns using UCanAccess? 【发布时间】:2014-05-28 07:20:29 【问题描述】:

如何使用 jdbc 编写 sql 查询以在 2 列上创建具有唯一约束的表: 我尝试这段代码并给我“SQLException:无效的创建语句!”:

 Connection conn = ConnectDB.getConnection();
    Statement stmt = null;
    try 
            String sql = "CREATE TABLE TBL_fonts" +
                    + "(char_id int not NULL, "
                    + "FW VARCHAR(255), "
                    + "code VARCHAR(255), "
                    + "character VARCHAR(255), "
                    + "CONSTRAINT fontConst UNIQUE(FW,code), "
                    + "PRIMARY KEY (char_id))";
            stmt = conn.createStatement();
            stmt.executeUpdate(sql);
        conn.commit();
     catch (SQLException ex) 
        ex.printStackTrace();
    

【问题讨论】:

请包含堆栈跟踪 SQL 在 MS-sqlserver 中运行良好,发布您的堆栈跟踪,这可能有助于找出问题所在 引起:java.sql.SQLException:无效的创建语句。在 net.ucanaccess.jdbc.AbstractExecute.addDDLCommand(AbstractExecute.java:103) 在 net.ucanaccess.jdbc.AbstractExecute.executeBase(AbstractExecute.java:119) 在 net.ucanaccess.jdbc.ExecuteUpdate.execute(ExecuteUpdate.java:56 ) 在 net.ucanaccess.jdbc.UcanaccessStatement.executeUpdate(UcanaccessStatement.java:160) 尝试-添加唯一索引(column1, column2); 给我:UcanaccessSQLException:意外令牌:需要索引:( 【参考方案1】:

此问题已在 UCanAccess 2.0.6.2 中修复。代码

String sql = 
        "CREATE TABLE TBL_fonts ("
        + "char_id int not NULL, "
        + "FW VARCHAR(255), "
        + "code VARCHAR(255), "
        + "character VARCHAR(255), "
        + "CONSTRAINT fontConst UNIQUE(FW,code), "
        + "PRIMARY KEY (char_id)"
        + ")";
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);

现在按预期工作。

【讨论】:

以上是关于如何使用 UCanAccess 在两列上创建具有唯一约束的表?的主要内容,如果未能解决你的问题,请参考以下文章

在两列上创建约束以支持特定规则

在 Amazon Redshift 中是不是可以在两列上设置条件?

如何在两列上立方体,就好像它们是一列一样?

模式构建器 laravel 迁移在两列上是唯一的

SQLalchemy:在两列上连接一个表

在 JOIN 中没有同时在两列上使用杜松子酒