2011-01-09 47 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(典型值));

創建表Abflug(
Flugbez VARCHAR(20),
FDatum日期,
典型 VARCHAR(20),
Seriennr INT,
Kaptaen VARCHAR(20),
主 鍵(Flugbez,FDatum,典型值,SerienNr),
外鍵(Flugbez)引用 Flug(Flugbez),
- 外鍵(FDatum)引用Flug(FDatum),
外鍵(典型值) 引用Flugzeugtyp(典型值)
- ,外鍵(SerienNr)參考Flugzeug(SerienNr)
);

當我去掉這些,我得到:

ERROR 1005(HY000):無法創建表 'db.abflug'(錯誤:150)

我使用的標準安裝MySQL服務器5.5

回答

5

問題是你所引用的主鍵是複合鍵,但你只是想引用外鍵中的一列(而不是第一個)。

例如,您在表flugzeug中定義主鍵primary key(Typ,SerienNr),但在表Abflug中您嘗試引用Foreign key(SerienNr) references Flugzeug(SerienNr)

您必須引用整個密鑰(Foreign key(Typ, SerienNr) references Flugzeug(Typ,SerienNr))。

+0

感謝它的工作!投票答覆! – Skiy