劳烦问一下,创表时外键约束无法创建

南无三 2016-05-03 11:00:14
--老师表
create table Teacher
(
t_id char(5) primary key,
t_name varchar(10)
)
go
--班级表
create table Class
(
c_id varchar(10) primary key,
c_name varchar(20),
c_belong varchar(26),--所属学院
c_major varchar(10),
c_num tinyint,
c_grade smallint
)
go
--学生表
create table Student
(
stu_id char(10) ,
stu_name varchar(10),
入校时间 smalldatetime,
c_id varchar(10) ,
primary key(stu_id , c_id),
foreign key(c_id) references Class(c_id)
)
go
--课程表
create table Curriculum
(
k_id char(4) ,
t_id char(5) ,
c_id varchar(10) ,
k_name varchar(20),
k_发布时间 smalldatetime,
k_时长 tinyint,
k_optional char(4)
check(k_optional = '必修' or k_optional = '选修'),
k_address char(4),
k_starttime smalldatetime,
k_credit float, -- 学分
k_examtime smalldatetime,
k_examaddress char(4),
k_exam_makeuptime smalldatetime,
K_exam_makeupaddress char(4),
primary key(k_id , t_id , c_id),
foreign key(t_id) references Teacher(t_id),
foreign key(c_id) references Class(c_id)
)
go
--成绩表
create table Grade
(
k_id char(4) ,
stu_id char(10) ,
g_peacetime float default null,
g_Test float default null,
g_Total float default null,
g_makeup float default null,
primary key(k_id , stu_id),
foreign key(k_id) references Curriculum(k_id),
foreign key(stu_id) references Student(stu_id)
)
go

消息 1776,级别 16,状态 0,第 1 行
在被引用表 'Curriculum' 中没有与外键 'FK__Grade__k_id__3E52440B' 中的引用列列表匹配的主键或候选键。
但是我stu_id和k_id都是主键啊,有什么问题?
...全文
204 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ginnnnnnnn 2016-05-05
  • 打赏
  • 举报
回复
因为你的 Curriculum 表里面的 主键是 primary key(k_id , t_id , c_id) 并非 k_id ,所以不能作为外键引用。
唐诗三百首 2016-05-05
  • 打赏
  • 举报
回复
try this,

alter table Curriculum add constraint uq_Curriculum_k_id unique (k_id)

alter table Student add constraint uq_Student_stu_id unique (stu_id)

--成绩表
create table Grade
(
    k_id char(4) ,
    stu_id char(10) ,
    g_peacetime float default null,
    g_Test float default null,
    g_Total float default null,
    g_makeup float default null,
    primary key(k_id , stu_id),
    foreign key(k_id) references Curriculum(k_id),
    foreign key(stu_id) references Student(stu_id)
)
卖水果的net 版主 2016-05-04
  • 打赏
  • 举报
回复
你的学生表,是联合主键“stu_id,c_id”,最后这张表,你只引用了一个 stu_id,必须调整一个,
卖水果的net 版主 2016-05-04
  • 打赏
  • 举报
回复
你的学生表,是联合主键“stu_id,c_id”,最后这张表,你只引用了一个 stu_id,必须调整一个,

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧