INSERT 语句与 FOREIGN KEY SAME TABLE 约束"FK__Course__Cpno__060DEAE8"冲突。
使用SQL2008构建数据库,创建表格的代码如下:createtableStudent(Snochar(9)primarykey,Snamechar(20)notnull...
使用SQL2008构建数据库,创建表格的代码如下:
create table Student
(Sno char(9)primary key,
Sname char(20)not null,
Ssex char(2)check(Ssex in('男','女')),
Sage smallint not null,
Sdept char(20) not null
)
create table Course
(Cno char(4)primary key,
Cname char(40)not null,
Cpno char(4),
Ccredit smallint not null,
foreign key(Cpno)references Course(Cno)
)
create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno)references Student(Sno),
foreign key(Cno)references Course(Cno),
)
执行上述代码后插入学生信息:
insert
into Student(Sno,Sname,Ssex,Sage,Sdept)
values('201215121','李勇','男','20','CS')
到这里没有问题,然后执行下列代码,插入课程信息:
insert
into Course(Cno,Cname,Cpno,Ccredit)
values('1','数据库','5','4')
SQL2008就报错了:
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 FOREIGN KEY SAME TABLE 约束"FK__Course__Cpno__060DEAE8"冲突。该冲突发生于数据库"XueSheng",表"dbo.Course", column 'Cno'。
语句已终止。
请问各位大侠,这是怎么回事的呢?? 展开
create table Student
(Sno char(9)primary key,
Sname char(20)not null,
Ssex char(2)check(Ssex in('男','女')),
Sage smallint not null,
Sdept char(20) not null
)
create table Course
(Cno char(4)primary key,
Cname char(40)not null,
Cpno char(4),
Ccredit smallint not null,
foreign key(Cpno)references Course(Cno)
)
create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno)references Student(Sno),
foreign key(Cno)references Course(Cno),
)
执行上述代码后插入学生信息:
insert
into Student(Sno,Sname,Ssex,Sage,Sdept)
values('201215121','李勇','男','20','CS')
到这里没有问题,然后执行下列代码,插入课程信息:
insert
into Course(Cno,Cname,Cpno,Ccredit)
values('1','数据库','5','4')
SQL2008就报错了:
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 FOREIGN KEY SAME TABLE 约束"FK__Course__Cpno__060DEAE8"冲突。该冲突发生于数据库"XueSheng",表"dbo.Course", column 'Cno'。
语句已终止。
请问各位大侠,这是怎么回事的呢?? 展开
3个回答
展开全部
Course(Cno,Cname,Cpno,Ccredit)表的cpno必要是在cno字段中存在,你插入的values('1','数据库','5','4')会失败,因为里面没有cno='5'的纪录。
追问
首先谢谢您的答复,我想追问一下,
那个Course表包含(课程号,课程名,先行课,学分)四个列,某些课程不需要先行课,但有些课程要,比如《数据库》的先行课是《数据结构》,那我该怎么修改代码呢??谢谢!!
追答
不需要先行课的,可以让先行课是自己
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询