SQL Server 插入语句错误 高分求解决

来源:百度知道 编辑:UC知道 时间:2024/06/21 02:15:37
我有两个表 Students 和 Score Students表里面的主键列Scode
Score表里面的外键列StudentsID 引用的Students里面的主键
Students表里面已经有数据了 但是我 在给Score表里面添加时报错了
消息 515,级别 16,状态 2,第 1 行
不能将值 NULL 插入列 'StudentId',表 'ACCP.dbo.Score';列不允许有空值。INSERT 失败。

Score表里面的外键 我设置的是空 我想我插入的时候 他应该自动调用Students表里面的主键列 但是报错了 SQL 语句看图

因为score表中有外键约束,所以你的这种插入方式,相当于给外键字段StudentsID插入了null值,这是违反外键约束的

什么叫自动调用主键列,,
主外建是一种约束,它要求外键不能插入主键列没有的数据
你明白了吗?

insert into score(Coureseid,Score,Scoreid) values(1,50,1)
你不觉得你这个表少了与Students关联的字段吗?
我猜你要的是:
insert into score(StudentsID,Coureseid,Score,Scoreid) values(1,1,50,1)

你的'StudentId'是not null的,所以不能不给值。除非你让他自增。
但是那样和你的Students 表就不能关联了。
你可以这样insert into Score(StudentsID,Coureseid,Score,Scoreid) select StudentId,1,50,1 from Students where ....条件

你的表存在外键约束,你必须保持你个表中关系字段的一致性,建议你这个表中的StudentID是从那个表中读过来的。