sql中同一个表中的外键和主键

时间:2015-10-15 23:14:37

标签: sql database

我有一个表雇员,其中PK是SSN,我想把FK作为Super_SSN来引用SSN。在将任何数据添加到我的表之前,我能够将Super_SSN作为我的FK,但是除了相同的SSN值之外,我无法将数据添加到Super_SSN。 例 我希望SSN为123456789,我尝试输入Super_SSN为987654321.但是我得到了FK约束错误。当我为SSN和Super_SSN输入相同的值时,它接受了它。然后,我从Super_SSN中删除了FK并添加了数据,之后我尝试将FK添加到Super_SSN,然后我收到错误。 请帮帮我!

2 个答案:

答案 0 :(得分:1)

SuperSSN必须引用现有员工的SSN

您应该以正确的顺序输入员工 - 首先是您的示例SSN 987654321,然后是SSN 123456789 SuperSSN = 987654321。

或者在未指定SuperSSN的情况下输入所有员工,并将其更新为另一个命令中的正确值。

答案 1 :(得分:0)

您收到错误是因为FK是递归关系的一部分。这意味着员工与另一名员工有关。如果第二个员工不存在,则会出现FK约束错误。这就是为什么在添加相同的SSN时没有收到错误的原因。可行的解决方案:您可以将Super_SSN列添加为简单字段,但不能添加为FK。