2014-11-20 6 views
0

Я пытаюсь связать две таблицы вместе с помощью внешнего ключа в MySQL. Таблица CLIENTS должна быть привязана к другой таблице (BIDS) с атрибутом идентификатора клиента.Создание внешних ключей в MySQL

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

Однако MySQL возвращает эту ошибку, когда я пытаюсь выполнить код.

# 1005 - Не удается создать таблицу «клиентов» (ERRNO: 150)

Это не кажется, что ошибка синтаксиса, так что кто-нибудь знает, что вызывает проблему или как можно Я чиню это?

+0

Возможный дубликат [MySQL Создание таблиц с внешними ключами, дающих errno: 150] (http://stackoverflow.com/questions/1457305/mysql-creating-tables-with-foreign-keys-giving-errno-150) –

+0

Ваш пример выглядит неполным для меня: как вы можете поместить столбцы 'EMAILADDRESSES',' PHONENUMBERS', 'CONTACTS' в первичный ключ, если у вас нет этих столбцов в таблице? –

+0

Каков тип данных для BIDS (CLIENTID)? Наиболее распространенная причина для errno 150 заключается в том, что тип данных FK не соответствует типу данных PK, на который он ссылается. –

ответ

1

При создании таблицы с первичным ключом, используя несколько столбцов, они должны быть указаны в запросе -

CREATE TABLE CLIENTS (
CLIENTID NUMERIC(3) NOT NULL, 
EMAILADDRESSES CHAR(64), 
PHONENUMBERS VARCHAR(16), 
CONTACTS VARCHAR(32), 
FOREIGN KEY(CLIENTID) REFERENCES BIDS(CLIENTID), 
CONSTRAINT key_name PRIMARY KEY(CLIENTID, EMAILADDRESSES,PHONENUMBERS,CONTACTS) 
); 

Вы также должны указать имя для множественного ключа столбца первичного. Почему вы хотели бы, чтобы все эти столбцы в качестве ключа были тайной.

Смежные вопросы