私は4つのテーブルを持っています.2つは別々のエンティティであり、それら2つをリンクする交差エンティティと、交差エンティティを参照する3番目のテーブルです。私が持っているものの構造は次のとおりです。
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
オラクルから次のエラーが表示されることです。
ORA-02256: 参照する列の数は、参照される列と一致する必要があります
tableC
で複合キーを参照できることを確認する必要がありますintersectionTable
。これは、FOREIGN KEY 制約で行ったと思っていました。制約をtableC
次のように変更しました。
FOREIGN KEY (primaryKeyA) REFERENCES tableA ,
FOREIGN KEY (primaryKeyB) REFERENCES tableB ,
ただし、データベースにクエリを実行すると、で作成された複合キーが使用されていないことがわかりましたintersectionTable
。これは私に必要です。
どんな助けでも素晴らしいでしょう。
乾杯!