MySQL, что не так с моими внешними ключами? - PullRequest
1 голос
/ 09 января 2011

что не так с двумя внешними ключами, которые я пометил в комментариях?

создать базу данных дб; использовать дБ;

создать таблицу Flug (
Flugbez varchar (20),
FDatum Date,
Ziel varchar (20),
Flugzeit int,
Entfernung int,
Первичный ключ (Flugbez, FDatum));

создать таблицу Flugzeugtyp (
Typ varchar (20),
Герштеллер varchar (20),
SitzAnzahl int,
Reisegeschw int,
первичный ключ (Тип)
);

создать таблицу flugzeug (
Typ varchar (20),
SerienNr int,
AnschDatum Date,
FlugStd int,
первичный ключ (Typ, SerienNr),
внешний ключевые (типовые) ссылки Flugzeugtyp (Typ));

создать таблицу Abflug (
Flugbez varchar (20),
FDatum Date,
Typ varchar (20),
Seriennr int,
Каптаен Варчар (20),
Первичный ключ (Flugbez, FDatum, Typ, SerienNr),
Ссылки на внешние ключи (Flugbez) Flug (Flugbez),
- Ссылки внешнего ключа (FDatum) Flug (FDatum),
Внешний ключ (тип) ссылки Flugzeugtyp (Typ)
- Ссылки внешнего ключа (SerienNr) Flugzeug (SerienNr)
);

Когда я раскомментирую это, я получаю:

ОШИБКА 1005 (HY000): невозможно создать таблицу 'db.abflug' (номер ошибки: 150)

Я использую стандартную установку MySQL Server 5.5

1 Ответ

5 голосов
/ 09 января 2011

Проблема в том, что первичные ключи, на которые вы ссылаетесь, являются составными ключами, но вы пытаетесь ссылаться только на один из столбцов (не первый) во внешних ключах.

Например, выопределить первичный ключ primary key(Typ,SerienNr) в таблице flugzeug, но в таблице Abflug вы пытаетесь сослаться на Foreign key(SerienNr) references Flugzeug(SerienNr).

Вы должны ссылаться на весь ключ (Foreign key(Typ, SerienNr) references Flugzeug(Typ,SerienNr)).

...