黑马程序员技术交流社区

标题: 【分享】外键对数据更新的影响 [打印本页]

作者: 许庭洲    时间: 2012-10-9 08:55
标题: 【分享】外键对数据更新的影响
T_Person表
FName                   FAge                      FRemark
Jim                         22                          BlaBla
Kimisushi                25                          BlaBla
Lili                          25                           BlaBla
luren1                    25                          BlaBla
LXF                        22                           BlaBla
Tom                       12                           Sonic
XiaoWang              25                           BlaBla


外键对数据更新的影响

外键是指向另一个表中已有数据的约束,因此外键值必须是在目标表中存在的。如果更新后的数据在目标表中不存在的话则会导致违反外键约束异常。T_Debt表中FPerson字段是指向表T_Person的FName字段的外键,如果我们执行下面的SQL:

UPDATE T_Debt set FPerson = 'Merry' WHERE FNumber = '1'


由于在T_Person表中不存在FName字段等于“Merry”的数据行,所以会数据库系统会报出类似如下的错误信息
UPDATE 语句与FOREING KEY 约束“FK_T_Debt_FPerson_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 来查看表中的数据:

FNumber           FAmount              FPerson
1                       200.00                  Lili
2                       300.00                  jim
8                       123.00                  Tom






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2