2011-01-09 2 views
1

내가 주석으로 표시 한 두 개의 외래 키에 무엇이 잘못 되었습니까?MySQL은 외래 키가 잘못 되었나요?

create database db; 사용 db; 표 Flug 생성

(
Flugbez VARCHAR (20)
FDatum 날짜
Ziel VARCHAR (20)
Flugzeit의 INT,
Entfernung의 INT,
기본 키 (Flugbez, FDatum));

Flugzeugtyp 테이블 작성 (
통상 VARCHAR (20), 제조 업체 견적
VARCHAR (20)
SitzAnzahl의 INT,
Reisegeschw의 INT,
기본 키 (일반)
);

테이블 flugzeug를 작성 (
통상 VARCHAR (20),
SerienNr의 INT,
AnschDatum 날짜,
FlugStd의 INT,
기본 키 (일반, SerienNr),
외국 키 (통상)는 Flugzeugtyp를 (참조 Typ));

은, (20),
FDatum 날짜
통상 VARCHAR (20)
Seriennr의 INT,
Kaptaen의 VARCHAR (20)
차 키 (Flugbez, FDatum를 표 Abflug (
Flugbez VARCHAR를 만들 외래 키 (FDatum) Flug (FDatum),
외래 키 (일반) 참조 Flugzeugtyp (일반)
를 참조 - 일반, SerienNr),
외래 키 (Flugbez는) Flug (Flugbez),
를 참조- 외래 키 (SerienNr) 참조 Flugzeug (SerienNr)
); 나는이 주석을 제거하면

, 내가 얻을 :

ERROR 1005 (HY000) : 나는의 표준 설치를 사용

: 테이블 'db.abflug'(150 errno에를) 만들 수 없습니다

답변

5

문제는 참조하는 기본 키가 복합 키이지만 외래 키의 첫 번째가 아닌 첫 번째 열만 참조하려고한다는 것입니다.

예를 들어 테이블 flugzeug에서 기본 키 primary key(Typ,SerienNr)을 정의하지만 테이블 Abflug에서 Foreign key(SerienNr) references Flugzeug(SerienNr)을 참조하려고 시도합니다.

전체 키 (Foreign key(Typ, SerienNr) references Flugzeug(Typ,SerienNr))를 참조해야합니다.

+0

감사합니다. 이 답변에 투표하십시오! – Skiy