外键是指向另一个表中已有数据的约束, 因此外键值必须是在目标表中存在的. 如果更新后的数据在目标表中不存在的话则会导致违反外键约束异常. T_Debt 表中 FPerson 字段是指向表 T_Person 的 FName 字段的外键, 如果我们执行下面 SQL:
UPDATE T_Debt set FPerson = "Merry" WHERE FNumber="1"
由于在 T_Person 表中不存在 FName 字段等于 "Merry" 的数据行, 所以会数据库系统会报出类似如下的错误信息:
UPDATE 语句与 FOREIGN KEY 约束 "FKT_DebtFPerson__1A14E395" 冲突. 该冲突发生于数据库 "demo", 表 "dbo.T_Person", column "FName".
而如果我们为 FPerson 字段设置已经在 T_Person 表中存在的 FName 字段值的话则会插入成功, 执行下面的 SQL:
UPDATE T_Debt set FPerson = "Lili" WHERE FNumber="1"
此句 SQL 则可以正常的执行成功. 执行 SELECT * FROM T_Debt 来查看表中的数据:
可以看到数据已经被正确的更新到表中了.
来源: http://www.bubuko.com/infodetail-2814368.html