2013-09-06 3 views
0

Сообщение об ошибке: # 1215 - Невозможно добавить ограничение внешнего ключане может добавить ограничение внешнего ключа

привет я не могу создать таблицу внешнего ключа ... как это сделать ... У меня есть две таблицы .. первая таблица получил два первичного ключа, то вторая таблица 1 первичный ключ ... первая таблица courseid varchar(5) и courseyear int и второй subj_id varchar(5)

create table studentload(
student_id varchar(11) not null, 
courseid varchar(5) not null, 
courseyear int not null, 
subj_id varchar(5) not null, 
foreign key (courseid,courseyear) references course(courseid,courseyear), 
foreign key (subj_id) references subject(subj_id) 
) 

EDIT

все это таблица, в которой я вставил уже

CREATE TABLE IF NOT EXISTS `course` (
    `courseid` varchar(5) NOT NULL, 
    `courseyear` int(11) NOT NULL, 
    `coursedesc` varchar(50), 
    `subj_id` varchar(5) NOT NULL, 
    PRIMARY KEY (`courseid`,`courseyear`) 
) 


CREATE TABLE IF NOT EXISTS `subject` (
    `subj_id` varchar(5) NOT NULL, 
    `subj_name` varchar(50) NOT NULL, 
    `courseid` varchar(5), 
    `courseyear` int(11), 
    foreign key (`courseid`,`courseyear`) references `courseid` (`courseid`,`courseyear`) 
) 
+1

Откуда вы знаете, что вы не можете создавать внешние ключи? – Phil

+0

это дало мне ошибку 'Не могу добавить ограничение внешнего ключа' – JeraldPunx

+0

Что происходит, когда вы пытаетесь добавить ограничение? Как именно вы пытаетесь добавить ограничение? Что происходит, когда вы делаете? Вы получили сообщение об ошибке? Что такое сообщение об ошибке? Пожалуйста, отредактируйте свой вопрос, чтобы обновить его с помощью этой информации, вырезать и вставить с экрана, а не перефразировать, чтобы мы могли вам помочь. –

ответ

2

Вот это образец SQLFiddle

Вы должны обязательно добавить primary key (subj_id) в вашем studentload таблице

В вашем foriegn отношениях Конечно, это не имя_таблицы. Он должен быть

"references course(courseid,courseyear)" 

Как

CREATE TABLE IF NOT EXISTS `course` (
    `courseid` varchar(5) NOT NULL, 
    `courseyear` int(11) NOT NULL, 
    `coursedesc` varchar(50), 
    `subj_id` varchar(5) NOT NULL, 
    PRIMARY KEY (`courseid`,`courseyear`) 
); 


CREATE TABLE IF NOT EXISTS `subject` (
    `subj_id` varchar(5) NOT NULL, 
    `subj_name` varchar(50) NOT NULL, 
    `courseid` varchar(5), 
    `courseyear` int(11), 
    foreign key (`courseid`,`courseyear`) references `course` (`courseid`,`courseyear`), 
    primary key (`subj_id`) 
); 

create table studentload(
    student_id varchar(11) not null, 
    courseid varchar(5) not null, 
    courseyear int not null, 
    subj_id varchar(5) not null, 
    foreign key (courseid,courseyear) references course(courseid,courseyear), 
    foreign key (subj_id) references subject(subj_id) 
); 
+0

нужно объяснить, почему downvotes? –

+0

как первичный ключ student_id ??? – JeraldPunx

1

Вы использовали "ссылки courseid (courseid, courseyear)". courseid - это не ваше имя-табло. Это должно быть «ссылки course (courseid, courseyear

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