2013-09-03 3 views
0

У меня есть таблица с именем course с колоннамиKey столбец «courseid» не существует в таблице

courseid 
coursename 

и у меня есть таблица subject с колоннами

sub_id 
sub_name 

и я хочу определите внешний ключ в моей таблице.

Это мой SQL код

ALTER TABLE subject 
ADD FOREIGN KEY (courseid) 
REFERENCES course(courseid); 

И это ошибка я получаю:

Key колонка 'courseid' не существует в таблице **

+0

Is 'courseid' ключ в таблице' курс'? – jensgram

ответ

0

Try что-то вроде этого:

EDITED

ALTER TABLE subject ADD courseid varchar(10); 
ALTER TABLE subject ADD Constraint 
FOREIGN KEY(courseid) REFERENCES course(courseid); 

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

+0

У меня есть ошибка вроде этого ... 'У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с курсом «ИНОСТРАННЫЕ КЛЮЧЕВЫЕ ССЫЛКИ» (курс) в строке 3' – JeraldPunx

+0

ОТВЕТ НА РЕДАКТИРОВАННЫЙ. – 7alhashmi

+0

мой курс не INT ... может изменить его в VARCHAR? – JeraldPunx

1

Сначала добавьте courseid колонку в subject таблице

Попробуйте это:

ALTER TABLE subject 
ADD courseid varchar(100); 

ALTER TABLE subject 
ADD FOREIGN KEY (courseid) 
REFERENCES course (courseid); 
+0

да я добавляю столбец, а затем снова пытаюсь выполнить код ... У меня есть эта ошибка 'Не могу добавить ограничение внешнего ключа' – JeraldPunx

+0

Знаете ли вы, какой MySQL DB двигатель вы используете? Внешние ключи поддерживаются только в InnoDB. Попробуйте запустить 'SHOW TABLE STATUS WHERE Name = 'subject'' и посмотреть, возвращает ли он столбец' engine' –

+0

Убедитесь, что новый столбец, добавленный в таблицу 'subject', имеет тот же тип данных, что и в таблице« курс » –

1
ALTER TABLE subject ADD FOREIGN KEY (courseid) 
REFERENCES course (courseid) 
ON DELETE CASCADE ON UPDATE CASCADE 

Убедитесь, что оба ур структуры таблицы в InnoDB и реляционные поля индексируются

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