2

私は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。これは私に必要です。

どんな助けでも素晴らしいでしょう。

乾杯!

4

1 に答える 1