2 qq 27843481 qq_27843481 于 2015.06.09 22:07 提问

sqlserver中如何把联合主键中的一个主键设置为另一表的外键

create table Course
(
CNO varchar(12) primary key(CNO,TNO),
CNAME nvarchar(20),
TNO varchar(12) references Teacher(TNO)
)
create table Score
(
SNO varchar(12) references Student(SNO),
CNO varchar(12) references Course(CNO) ,
DEGREE int,
)
当创建Score表示创建不了,
图片说明

2个回答

frank_20080215
frank_20080215   2015.06.09 23:08

明明是语法不对的问题。以上是伪代码(教材讲解用的)

qq_27843481
qq_27843481 不是语法问题........
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.06.10 01:32

外键需要主键或者该列定义的是UNIQUE 方式
Course的CNO不具备这两个特征,所以报错了。
另外DEGREE int,最后多了一个逗号

qq_27843481
qq_27843481 那该怎么办?如果只设置CNO为主键,但是因为CNO的值有重复(一门课程可以由多个老师教),所以不行,用了组合键;如果不设置主键,也不行因为这样无法成为外键。是不是(TNO,CNO)为组合键,CNO就不能成为外键?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片