Создание внешних ключей в phpMyAdmin (MySQL)

Я пытаюсь создать базу данных в MySQL на phpMyAdmin. Я могу создавать таблицы без каких-либо проблем, но я также хочу добавить некоторые внешние ключи. В этом случае я хочу связать таблицы BIDS и CLIENTS через атрибут CLIENTID.

CREATE TABLE BIDS (
 BIDID               NUMERIC(3) NOT NULL PRIMARY KEY,
 CLIENTID            NUMERIC(3) NOT NULL
 );

CREATE TABLE CLIENTS (
 CLIENTID            NUMERIC(3) NOT NULL,
 EMAILADDRESSES      VARCHAR(100) NOT NULL,
 PHONENUMBERS        VARCHAR(11) NOT NULL,
 FOREIGN KEY (CLIENTID) REFERENCES BIDS (CLIENTID),
 PRIMARY KEY (CLIENTID,EMAILADDRESSES,PHONENUMBERS)
 );

Исследования показали мне, что синтаксис правильный, но этот код возвращает следующую ошибку.

1005 - Невозможно создать таблицу «КЛИЕНТЫ» (номер ошибки: 150)

По-видимому, решение может быть связано с чем-то под названием «InnoDB». Как я могу использовать его для решения моей проблемы?


person Ben    schedule 20.11.2014    source источник


Ответы (1)


Синтаксис в порядке, но проблема с оператором FORIEGN KEY, как показано ниже. Вы не можете создать FK в неключевом столбце. В таблице BIDS это BIDID, который определяется как Primary Key, а не CLIENTID.

FOREIGN KEY (CLIENTID) REFERENCES BIDS (CLIENTID)

Итак, ваше определение FORIEGN KEY на самом деле должно быть

FOREIGN KEY (CLIENTID) REFERENCES BIDS (BIDID)

См. демонстрацию здесь http://sqlfiddle.com/#!2/f1c9ec.

person Rahul    schedule 20.11.2014
comment
Хорошо. Итак, это свяжет правильные поля вместе? - person Ben; 21.11.2014
comment
Да, по вашему требованию вы также можете определить clientid как PK в таблице BIDS. - person Rahul; 21.11.2014