【问题标题】:HSQL: Error when attempting to create foreign key constraintHSQL:尝试创建外键约束时出错
【发布时间】:2012-04-05 15:35:19
【问题描述】:

以下是我的表的create DDL:

create table REFDATA.CONFIG_COLLECTION  (
COLLECTION_ID        NUMBER(22,7)                      not null,
COLLECTION_CD        VARCHAR2(12)                    not null,
COLLECTION_TYPE      VARCHAR2(12)                    not null,
COLLECTION_DESC      VARCHAR2(255),
primary key (COLLECTION_ID) 
)
create unique index REFDATA.CONFIG_COLLECTION_AK on REFDATA.CONFIG_COLLECTION (COLLECTION_CD);

然后我有以下更改来创建外键:

alter table REFDATA.CONFIG_COLLECTION_MEMBER
add foreign key (COLLECTION_CD)
references REFDATA.CONFIG_COLLECTION (COLLECTION_CD);

加载 HSQLDB 时出现以下错误:

Caused by: java.sql.SQLException: Primary or unique constraint required on main table: CONFIG_COLLECTION in statement [

alter table REFDATA.CONFIG_COLLECTION_MEMBER
   add foreign key (COLLECTION_CD)
      references REFDATA.CONFIG_COLLECTION (COLLECTION_CD)]
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
    at org.hsqldb.jdbc.jdbcStatement.execute(Unknown Source)
    at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)
    at org.springframework.jdbc.core.JdbcTemplate$1ExecuteStatementCallback.doInStatement(JdbcTemplate.java:420)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:395)
    ... 46 more

这里有什么问题?在我看来,我已经正确指定了唯一约束。这是 HSQLDB 的 1.8 版。

【问题讨论】:

    标签: hsqldb


    【解决方案1】:

    唯一索引不是唯一约束。您不需要唯一索引,但必须创建唯一约束。

    ALTER TABLE REFDATA.CONFIG_COLLECTION ADD CONSTRAINT CONFIG_COLLECTION_AK UNIQUE(COLLECTION_CD);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多