0
基本的に私は結合テーブルの作成に問題があり、修正方法がわかりません。最初にcInfoを作成してから、mInfoを作成してからeInfoを作成しましたが、cRentedを作成しようとするとエラーが発生しました:Error Code:1215。外部キー制約を追加できません。どんな助け?以下でMYSQL:エラーコード:1215.外部キー制約を追加できません
CREATE TABLE cInfo (
cid int(4) DEFAULT '0',
fname varchar(20) NOT NULL,
sname varchar(20) NOT NULL,
age int(4) DEFAULT '0',
gender enum('M', 'F') NOT NULL DEFAULT 'M',
telno int(10) DEFAULT '0',
email varchar(20) NOT NULL,
addr varchar(50) NOT NULL,
cowed int(4) NOT NULL DEFAULT '0',
PRIMARY KEY (cid, cowed)
);
INSERT INTO cInfo VALUES(1,'Smith', 'John', 20, 'M', 0891234567,
'[email protected]', '1 Bishopstown Road, Cork', 10);
CREATE TABLE mInfo (
mid INT NOT NULL,
title varchar(100) NOT NULL,
director varchar(100) NOT NULL,
relyear int(4) NOT NULL,
genre enum('Thriller','Horror','Documentary','Comedy','Drama') NOT NULL
DEFAULT ‘Drama’,
PRIMARY KEY (mid)
);
INSERT INTO mInfo VALUES(1,'Justice League', 'Zack Snyder', 2017, 'Comedy');
CREATE TABLE eInfo (
eid int(4) DEFAULT '0',
ppsn varchar(10) NOT NULL,
fname varchar(20) NOT NULL,
sname varchar(20) NOT NULL,
gender enum(‘M’, ‘F’) NOT NULL DEFAULT ‘M’,
telno int(10) DEFAULT '0',
email varchar(100) NOT NULL,
addr varchar(200) NOT NULL,
mid INT NOT NULL,
PRIMARY KEY (mid),
CONSTRAINT eInfo_ref1 FOREIGN KEY (mid) REFERENCES mInfo (mid)
);
INSERT INTO eInfo VALUES(1, '1234567A', 'Moyes', 'Richard', 'M', 0871234567,
'[email protected]', '1 CIT Road, Cork', 1);
CREATE TABLE cRented (
cid int(4) DEFAULT '0',
mid INT NOT NULL,
dor Date NOT NULL,
cowed int(4) NOT NULL DEFAULT '0',
PRIMARY KEY (cid, mid, cowed),
CONSTRAINT cRented_ref1 FOREIGN KEY (cid) REFERENCES cInfo (cid),
CONSTRAINT cRented_ref2 FOREIGN KEY (mid) REFERENCES mInfo (mid),
CONSTRAINT cRented_ref3 FOREIGN KEY (cowed) REFERENCES cInfo (cowed)
);
INSERT INTO cRented VALUES(1, 1, 2017-11-23, 10);
FKはPKと一致する必要があります。 cInfoにはPK(cid、cowed)がありますが、FKはcidのみを参照します。 – jarlh
また、同じテーブルの主キーである外部キーを持つべきではありません。 'eInfo'では' mid 'ではなく 'eid'を主キーにするべきです。 @ObsidianAge、 –
を実行できます。 (しかしあまり一般的ではありません) – jarlh