关键字'CONSTRAINT'附近的语法不正确

时间:2016-11-08 04:29:19

标签: mysql sql-server

我收到此错误消息...

  

Msg 156,Level 15,State 1,Line 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)); 

2 个答案:

答案 0 :(得分:3)

我认为那些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如何知道每个约束实际属于哪个表?

答案 1 :(得分:0)

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
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));; 

根据我的理解 这里必须在学生的表格内创建约束 和 第二个表你在课堂上创建2次主键(标题) 和 来到第三表semid本身不在学期表中