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