SQL 2008创建表方法和KEY

时间:2010-01-17 13:55:27

标签: sql sql-server-2008

我有一个生成表的脚本 - 只有我的SQL 2008版本会引发错误 - 语法是否已更改?或者我该如何手动修复它?

CREATE TABLE ScoHistory (
    CourseID varchar (255) NOT NULL ,
    SessionID int NOT NULL ,
    ScoID varchar (255) NOT NULL ,
    StudentID varchar (255) NOT NULL ,
    DateRecorded datetime NULL ,
    score_raw varchar (12)  NULL,
    KEY student_course_sess_scohist_idx (StudentID, CourseID, SessionID, ScoID) -- this is the bit it doesn't like! It says incorrect syntax near KEY...
);

非常感谢,

短套壳

3 个答案:

答案 0 :(得分:1)

您可以像这样定义命名主键表约束:

CREATE TABLE ScoHistory (
CourseID varchar (255) NOT NULL,
SessionID int NOT NULL,
ScoID varchar (255) NOT NULL,
StudentID varchar (255) NOT NULL,
DateRecorded datetime NULL,
score_raw varchar (12) NULL,
CONSTRAINT student_course_sess_scohist_idx PRIMARY KEY (StudentID, CourseID, SessionID, ScoID) 
);

答案 1 :(得分:0)

如果这是预期的行为,它会像这样工作:

CREATE TABLE ScoHistory ( 
    CourseID varchar (255) NOT NULL , 
    SessionID int NOT NULL , 
    ScoID varchar (255) NOT NULL , 
    StudentID varchar (255) NOT NULL , 
    DateRecorded datetime NULL , 
    score_raw varchar (12)  NULL, 
    PRIMARY KEY (StudentID, CourseID, SessionID, ScoID) 
); 

您只想在表上创建一个非唯一索引,使用CREATE INDEX语句创建索引。

答案 2 :(得分:0)

CREATE TABLE ScoHistory
  ( 
   CourseID varchar(255) NOT NULL
  ,SessionID int NOT NULL
  ,ScoID varchar(255) NOT NULL
  ,StudentID varchar(255) NOT NULL
  ,DateRecorded datetime NULL
  ,score_raw varchar(12) NULL,
  ) ;

ALTER TABLE dbo.ScoHistory ADD
CONSTRAINT PK_ScoHistory PRIMARY KEY (StudentID, CourseID, SessionID, ScoID);