Вопрос:
Я получаю это сообщение об ошибке…
Msg 156, уровень 15, состояние 1, строка 20
Неправильный синтаксис рядом с ключевым словом “CONSTRAINT”.
Я сделал свое исследование, и я все еще придерживаюсь завершения этого сценария.
Вот что я вошел.
DROP TABLE SEMESTER; DROP TABLE CLASS; DROP TABLE STUDENT; CREATE TABLE STUDENT ( stuid int not null, stulname CHAR(40) not null, stufname CHAR(40) not null, stugender CHAR(1) not null, stubirthdate DATE not null); CREATE TABLE CLASS ( title CHAR(40) not null PRIMARY KEY, instructor CHAR(40) not null ); CREATE TABLE SEMESTER ( year int not null ); CONSTRAINT pk_student PRIMARY KEY (stuid, stulname, stufname, stugender, stubirthdate), CONSTRAINT pk_class PRIMARY KEY (title, instructor), CONSTRAINT pk_semester PRIMARY KEY (semid, year)); Лучший ответ:
Я думаю, что эти инструкции CONSTRAINT должны быть внутри операторов CREATE TABLE. Например, таблица STUDENT должна выглядеть так:
CREATE TABLE STUDENT ( stuid int not null, stulname CHAR(40) not null, stufname CHAR(40) not null, stugender CHAR(1) not null, stubirthdate DATE not null, CONSTRAINT pk_student PRIMARY KEY (stuid, stulname, stufname, stugender, stubirthdate), );
В противном случае, как RDBMS знает, к какой таблице на самом деле принадлежит каждое ограничение?
Ответ №1DROP TABLE SEMESTER; DROP TABLE CLASS; DROP TABLE STUDENT; CREATE TABLE STUDENT ( stuid int not null, stulname CHAR(40) not null, stufname CHAR(40) not null, stugender CHAR(1) not null, stubirthdate DATE not null CONSTRAINT pk_student PRIMARY KEY (stuid, stulname, stufname, stugender, stubirthdate),); CREATE TABLE CLASS ( title CHAR(40) not null , instructor CHAR(40) not null , CONSTRAINT pk_class PRIMARY KEY (title, instructor)); CREATE TABLE SEMESTER ( year int not null , semid int not null CONSTRAINT pk_semester PRIMARY KEY (semid, year));;
AS для моего понимания Здесь ограничение должно быть создано внутри таблицы для ученика, а вторая таблица u создает 2-кратный первичный ключ в классе (заголовок) и подходит к третьей таблице semid, не присутствующей в таблице семестра