を参照していない、私は次の2つの表があります。SQL:外部キーが正しく
CREATE TABLE IF NOT EXISTS Doctor
(
ssn CHAR(11) PRIMARY KEY,
name CHAR(30),
specialty CHAR(30),
yearsOfExperience INTEGER
);
CREATE TABLE IF NOT EXISTS Pri_Phy_Patient
(
ssn CHAR(11) PRIMARY KEY,
name CHAR(20),
age INTEGER,
address CHAR(200),
phy_ssn CHAR(11),
FOREIGN KEY (phy_ssn) REFERENCES Doctor(ssn)
);
select * from doctor
は、次の値を返します。
ssn name specialty yearsOfExperience
-------------------------------------------------
156188 Dr. Doctor Doctorism 12
338738 Dr. Jim Eyes 2
4354354 Dr. Man Legs 1
453543 Dr. Woman Arms 5
select * from pri_phy_patient
戻り、この:
ssn name age address phy_ssn
-------------------------------------------------------------
1234134 Patrick 32 331 Patrickson Lane, Patton, CO NULL
1234597 Patty 23 331 Patterson Dr, Pattington, IL NULL
654643 Pamela 46 331 Pammerson Rd, Pammington, OR NULL
のはなぜですphy_ssn
列はの場合NULL
に戻ります?私はphy_ssn
とDoctor(ssn)
を参照しています。 phy_ssn
コラムにすべての医師のSSNがあるはずはありませんか?
phy_ssnはnullableです。つまり、Pri_Phy_Patientに行があり、Doctorに対応する行がありません。それがあなたが望むものでなければ、phy_ssnをNULLにしないでください。 –
'' phy_ssn''をNOT NULL'とするとエラーが発生します: '' Error Code:1452.子行を追加または更新できません:外部キー制約は失敗します( 'project'.pri_phy_patient'、CONSTRAINT' pri_phy_patient_ibfk_1' FOREIGN KEY( 'phy_ssn')REFERENCES' doctor'( 'ssn'))' ' – doy
あなたは**患者テーブルに**データを挿入していますか?挿入時に 'phy_ssn'に有効な値を指定していますか? –