2012-04-05 27 views
0

次のエラーは、私のテーブルのDDLを作成している:私は取得HSQL:外部キー制約を作成しようとし

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

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を持っています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です。

答えて

1

一意索引は一意制約ではありません。ユニークなインデックスは必要ありませんが、ユニークな制約を作成する必要があります。

ALTER TABLE REFDATA.CONFIG_COLLECTION ADD CONSTRAINT CONFIG_COLLECTION_AK UNIQUE(COLLECTION_CD); 
関連する問題