Sql 使用交集实体中的复合外键作为主键?
我有四个表,2个是独立的实体,一个交叉实体将这两个连接在一起,第三个表引用交叉实体。以下是我所拥有的结构:Sql 使用交集实体中的复合外键作为主键?,sql,foreign-keys,primary-key,composite-primary-key,Sql,Foreign Keys,Primary Key,Composite Primary Key,我有四个表,2个是独立的实体,一个交叉实体将这两个连接在一起,第三个表引用交叉实体。以下是我所拥有的结构: CREATE TABLE tableA ( primaryKeyA number(4) , PRIMARY KEY (primaryKeyA) ); CREATE TABLE tableB ( primaryKeyB number(4) , PRIMARY KEY(primaryKeyB) ); CREATE TABLE intersection
CREATE TABLE tableA (
primaryKeyA number(4) ,
PRIMARY KEY (primaryKeyA) );
CREATE TABLE tableB (
primaryKeyB number(4) ,
PRIMARY KEY(primaryKeyB) );
CREATE TABLE intersectionTable (
primaryKeyA number(4) ,
primaryKeyB number(4) ,
FOREIGN KEY (primaryKeyA) REFERENCES tableA ,
FOREIGN KEY (primaryKeyB) REFERENCES tableB ,
PRIMARY KEY (primaryKeyA, primaryKeyB) );
CREATE TABLE tableC (
primaryKeyC number(4) ,
primaryKeyA number(4) ,
primaryKeyB number(4) ,
FOREIGN KEY (primaryKeyA) REFERENCES intersectionTable ,
FOREIGN KEY (primaryKeyB) REFERENCES intersectionTable ,
PRIMARY KEY (primaryKeyA, primaryKeyB, primaryKeyC) );
问题是,每次我创建table c
时,我都会收到来自oracle的以下错误:
ORA-02256:引用列数必须与引用列数匹配
我需要确保tableC
可以引用intersectionTable
中的复合键,我以为我已经用外键约束完成了这项工作。我确实将表C中的约束条件更改为:
FOREIGN KEY (primaryKeyA) REFERENCES tableA ,
FOREIGN KEY (primaryKeyB) REFERENCES tableB ,
然而,在查询数据库时,我发现它没有使用在intersectionTable
中创建的复合键,这是我所需要的
任何帮助都会很棒
干杯
CREATE TABLE tableC
( primaryKeyC number(4)
, primaryKeyA number(4)
, primaryKeyB number(4)
, FOREIGN KEY (primaryKeyA,primaryKeyB)
REFERENCES intersectionTable (primaryKeyA,primaryKeyB)
, PRIMARY KEY (primaryKeyA, primaryKeyB, primaryKeyC)
)
;