A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许庭洲 黑马帝   /  2012-10-9 08:55  /  1143 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马