2017-02-15 8 views
0

MYSQLに親の子関係を持つ2つのテーブルを作成しました。ただし、外部キーの関係はエラーコード1215で失敗します。MAIN_ROLEには、多くのSUB_ROLEエイリアスを使用できます。 SUB_ROLEには複合PRIMARYキー(ID、MAIN_ID、SEQ_NUM)があります。 MAIN_ROLEテーブルのPRIMARY KEYは、SUB_ROLES主キーの一部です。 はここにあるテーブルと私の制約:MYSQLの外部キー親子の関係

 create TABLE MAIN_ROLE(
     ID int NOT NULL AUTO_INCREMENT, 
    MAIN_ID int NOT NULL, 
    ASSIGNED_DATE datetime NULL, 
    MAIN_ROLE_NM varchar(50) NOT NULL, 
    PRIMARY KEY(ID,MAIN_ID) 
    ); 


    create TABLE SUB_ROLE(
    ID int NOT NULL, 
MAIN_ID int NOT NULL, 
SEQ_NUM decimal(15, 0) NOT NULL, 
SUB_ROLE_NM varchar(50) NOT NULL, 
PRIMARY KEY(ID,MAIN_ID,SEQ_NUM) , 
CONSTRAINT SUB_ROLE_FK REFERENCES MAIN_ROLE(ID,MAIN_ID,SEQ_NUM) 
    ); 

誰かが私のスクリプト内の外部キーと間違って何を指摘してもらえますか?助けてください!

+0

を参照しているあなたは、テーブルmain_role –

答えて

0

これは、働いていたCONSTRAINT SUB_ROLE_FK FOREIGN KEY(ID、MAIN_ID)がMAIN_ROLE(ID、MAIN_ID)

1

主な問題は、あなたがMySQLのforeign key syntax以下、あなたはありません親テーブル内のフィールドを参照することをされていないということです。

  1. あなたは子テーブルからフィールドのリストを提供しない
  2. SEQ_NUMメインテーブルにフィールドは存在しません。サブテーブルにのみ存在します。

正しい外部キー定義は次のように次のようになります。

CONSTRAINT SUB_ROLE_FK FOREIGN KEY (ID,MAIN_ID) REFERENCES MAIN_ROLE(ID,MAIN_ID) 

はしかし、私は本当にehatメインテーブルで自動インクリメントidフィールドとmain_idフィールドを持つのポイントがあります表示されません。私はそれを2回目にします。私は残念ながらテーブルを設計していなかったので、私はノー持っ

+0

にseq_role列を欠落していることになりますそれを制御する。 – BreenDeen

+0

MySQLで動作しません – BreenDeen

+0

Plsは、正確に何を試したのか、どんなエラーメッセージ/予期しない動作が発生したのかについて少し具体的です。私がMySQLの関連マニュアルページにリンクしているという事実は言うまでもなく、私が示唆した実際のコードにいくつかの軽微な構文/スペルミスがある場合は、それをあなた自身で解決することができます。 – Shadow