2012-09-06 83 views
1

我有以下字段两个表:外键冲突无法插入数据

表1:

学生硕士

领域:

stu_id(primary key) 
name 
class 
doc upload 
sub_id(foreign_key) 

表2:

个主题

领域:

sub_id(primary key) 
subject name 

但是,当我在表格中插入条目它提供了以下错误。

INSERT语句与FOREIGN KEY约束“FK__student_m__sub_i__0C85DE4D”冲突。冲突发生在数据库“test2”,表“dbo.subject”,列'sub_id'**

请问我在哪里错了?

+0

您是否尝试将subid添加到在科目中不存在的学生主人? –

回答

2

因为你尝试插入其中不存在的int SubjectStudent Master的sub_id值(没有在Subject表中没有引用)

如果这些都是第一的记录,然后确保,你首先插入Subject那么Student Master

+0

但是我有一个下拉菜单作为主题谁的sub_id是从主题表中获得的值 – Coder1010

+0

然后您应该测试您的插入,因为错误意味着我和其他人描述的内容。可能问题出在你的代码中。 –

+0

我已经检查了被插入student_master的sub_id已经存在于主题表中。我知道外键必须存在于其主键的表中。 – Coder1010

0

这是因为你在Student Master表,sub_id不存在对表subject插入记录。请记住,您已将Student Master表的sub_id指定为来自subject表的外键。这也意味着Student Master表依赖于subject表。这打破了参照完整性。

+0

我应该怎么做才能纠正? – Coder1010

+0

@ Coder1010最好的方法是先在主题表上插入所有需要的记录(*,你认为它可能会*),然后在插入'学生主表'时使用'ID' –

+0

I已经检查了被插入到student_master中的sub_id已经存在于主题表中。我知道外键在它作为主键的表中必须存在的基本原理。 – Coder1010

0

FK的工作方式是它不能在该列中有一个值不在被引用表的主键列中。

因为它是一个外键约束,它告诉你试图插入表中的值不在引用表中。

因此,您首先必须确保插入到Student表中sub_id可用于subject表中。

编辑:

纠正它尝试在SQL Server Management Studio中,这个命令:

sp_help 'dbo.subject' 
+0

但是我的主题是一个从主题表绑定值的下拉列表,意思是主题表中存在所有的值。那么? – Coder1010

+0

请参阅我的编辑.. @ Coder1010 –

0

您需要先子记录插入主记录。 首先在Student Master表中插入记录,然后尝试在Subject表中插入。如果您向我发送您的插入语句, 将会更好地帮助您。