我有四个表,两个是单独的实体,一个将这两个连接在一起的交叉实体和第三个表,它引用了交叉实体。这是我所拥有的结构:
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) );
问题是,每次创建时,tableC
我都会从 oracle 收到以下错误:
ORA-02256: 引用列的数量必须与引用的列匹配
我需要确保它tableC
可以引用复合键intersectionTable
,我认为我已经用我的 FOREIGN KEY 约束完成了。我确实将约束更改tableC
为:
FOREIGN KEY (primaryKeyA) REFERENCES tableA ,
FOREIGN KEY (primaryKeyB) REFERENCES tableB ,
但是在查询数据库时,我发现它没有使用intersectionTable
我需要的复合键。
任何帮助都是极好的。
干杯!