回 帖 发 新 帖 刷新版面

主题:在SQL2000中,外键引用主键请教

创建Students表,创建RollNo,StudentName为组合键,没有什么问题;
CourseCode为外键,引用Course表(Course表已创建,在这里省略)中的CourseCode主键,有错误发生,应该怎么修改啊?


CREATE TABLE Students(
RollNo int,
StudentName varchar(20) PRIMARY KEY(RollNo,StudentName),
EnrollmentDate datetime,
CourseCode int foreign key references Course(CourseCode),---这句有问题
Qualification varchar(20),
Address varchar(100),
EmailID varchar(20),
ContactNo bigint,
Opinion varchar(100),
Status varchar(20),
FeeOpted varchar(15),
NumberOfInstallments tinyint,
BatchNo int)

回复列表 (共2个回复)

沙发

foreign key (CourseCode)references Course(CourseCode)

你把格式搞错了

forign key(<列名1>) references <表名>(<列名2>)
句子定义了一个列名为"<列名1> "的外键,它与表名为"<表名>"的表中的"<列名2>"相对应,且"<列名2>"在表名为"<表名>"的表中是主键

板凳

修改为以下语句获得成功:
CREATE TABLE Students(
RollNo int,
StudentName varchar(20) PRIMARY KEY(RollNo,StudentName),
EnrollmentDate datetime,
CourseCode int,
Qualification varchar(20),
Address varchar(100),
EmailID varchar(20),
ContactNo bigint,
Opinion varchar(100),
Status varchar(20),
FeeOpted varchar(15),
NumberOfInstallments tinyint,
BatchNo int)

ALTER TABLE Students
add constraint CourseCode check(CourseCode='FULL CASH' OR CourseCode='INSTALLMENT')
ALTER TABLE Students
add constraint FK_con foreign key(CourseCode) references Course(CourseCode)

不过我发现,之前表Course中,字段CourseCode和字段CourseType为组合主键,外表Students中字段CourseCode就不能引用主表 Course中的CourseCode。后将组合主键改为单主键CourseCode,问题就解决了。难道外表字段不能引用主表中的组合主键吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册