2016-04-01 10 views
1

ここに2つのテーブルがあります。MySQL:foriegnキー制約を追加できません

CREATE TABLE Medical_Record(
Patient_SSN VARCHAR(10), 
Record_ID VARCHAR(10), 
Medical_Issue VARCHAR(45), 
Medical_Status VARCHAR(15), 
Doctor_ID VARCHAR(10), 
Hosp_ID VARCHAR(10), 
Event_Date DATE, 
PRIMARY KEY (Patient_SSN,Record_ID), 
FOREIGN KEY (Patient_SSN) REFERENCES Citizen(SSN) ON DELETE CASCADE ON UPDATE CASCADE, 
FOREIGN KEY (Doctor_ID,Hosp_ID) REFERENCES Employment_Status(Worker_ID) ON DELETE CASCADE ON UPDATE CASCADE, 
); 

CREATE TABLE Employment_Status(
Citizen_SSN VARCHAR(10), 
Worker_ID VARCHAR(10), 
Org_ID VARCHAR(10), 
Employee_Position VARCHAR(15), 
Join_Date DATE, 
Leave_Date DATE, 
Profession VARCHAR(30), 
PRIMARY KEY (Citizen_SSN,Worker_ID,Org_ID), 
FOREIGN KEY (Citizen_SSN) REFERENCES Citizen(SSN) ON DELETE CASCADE ON UPDATE CASCADE, 
FOREIGN KEY (Org_ID) REFERENCES Organization(Org_ID) ON DELETE CASCADE ON UPDATE CASCADE 
); 

CREATE TABLE Citizen(
SSN VARCHAR(10), 
FName VARCHAR(15), 
MName VARCHAR(15), 
LName VARCHAR(15), 
Gender VARCHAR(1), 
Birth_Date DATE, 
Death_Date DATE, 
Spouse_SSN VARCHAR(10), 
Blood_Group VARCHAR(5), 
Pincode VARCHAR(7), 
Address TEXT, 
PRIMARY KEY (SSN), 
FOREIGN KEY (Spouse_SSN) REFERENCES Citizen(SSN) ON DELETE CASCADE ON UPDATE CASCADE 
); 

CREATE TABLE Organization(
Org_ID VARCHAR(10), 
Org_Name VARCHAR(45), 
Email VARCHAR(45), 
Phone_Number VARCHAR(15), 
Established_Date DATE, 
Closing_Date DATE, 
PRIMARY KEY (Org_ID) 
); 

答えて

0

アップデート1:エラーがテーブルの最後の2行「Medical_Record」で来る
以下に添付 は、SQLスクリプトを実行して、実際のエラーです。

enter image description here

あなたはEmployee_Statusテーブルで定義された複合キーを持っています。
列ごとに個別のキーを定義し、子テーブルを参照します。
これが機能しているはずです。

PRIMARY KEY (Citizen_SSN,Worker_ID,Org_ID), 
KEY (Worker_ID), -- <-------- Add this line 
KEY (Org_ID), -- <-------- Add this line 

オリジナル回答
すべての参照親フィールドはそれにindexを定義しておく必要があります。これが外部キー追加の条件です。

外部キー制約のドキュメントを1として

REFERENCES parent_tbl_name (index_col_name,...) 

Employment_Status.Worker_IDEmployment_Status.Org_IDに関連するキーを定義します。次に、それらを子テーブルで参照できるはずです。

を参照してください。

[CONSTRAINT [シンボル] FOREIGN KEY
[INDEX_NAME(index_col_name内、...)
REFERENCES tbl_nameをし(index_col_name内、...)
[ON DELETE reference_option]
[ON UPDATE reference_option]

reference_option:
RESTRICT |カスケード| SET NULL | NO ACTION

+0

これはうまくいきません。私はすでにEERを作成しており、MySQL Workbenchのダイアグラムをエンジニアに転送しようとしましたが、それは私に同じエラーをもたらしました。 –

+0

あなたの投稿にスローされた正確なエラー文を追加する方がよいでしょう。 –

+0

これは正確なエラーステートメントです –

関連する問題