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