我有一个生成表的脚本 - 只有我的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...
);
非常感谢,
短套壳
答案 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);