#mysql #mysql-workbench
Вопрос:
Я пытался создать таблицу с 2 внешними ключами в качестве составного первичного ключа.
create table attendance( meetingNo char(10), studNo char(10), attStatus varchar (7) not null, foreign key (meetingNo) references classmeeting (meetingNo) on delete set null on update cascade, foreign key (studNo) references student (studNo) on delete set null on update cascade, primary key (meetingNo,studNo) );
но это не позволяет мне активировать и загрузить таблицу. ошибка 1830
как устранить эту проблему?
у меня есть таблицы, на которые я ссылаюсь здесь
create table classmeeting( meetingNo char(10) primary key, classID char(10) , meetingDate date not null, foreign key (classID) references class (classID) on delete set null on update cascade );
и
CREATE TABLE student ( studNo char(10) primary key, ranksNo char(10), studLastName varchar(15) not null, studFirstName varchar (15) not null, studBirthDate date not null, studJoinDate date not null, foreign key (ranksNo) references ranks (ranksNo) on delete set null on update cascade );
Комментарии:
1. Столбцы первичного ключа не могут быть пустыми. И
ON DELETE SET NULL
не является законным каскадным действием для НЕ ПУСТЫХ столбцов. Рекомендация: используйте синтетический первичный ключ, определите(meetingNo,studNo)
составной ключ какUNIQUE
.