黑马程序员之SQL 学习笔记:外键对数据更新的影响
2012-10-09 08:55
441 查看
-------------------------------2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!-----------------------------
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
---------------------------------------------------
2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------
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
---------------------------------------------------
2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------
相关文章推荐
- 黑马程序员之SQL学习笔记:主键对数据更新的影响
- 黑马程序员之SQL 学习笔记:非空约束对数据更新的影响
- ASP.NET 3.5核心编程学习笔记(23):Linq-to-SQL 数据的更新、事务、存储过程、函数
- 黑马程序员—学习笔记之SQL数据分组、限制结果集行数
- SQL 学习笔记<五> 数据更新
- SQL学习笔记5 组合查询 插入/更新/删除数据 创建和操纵表
- 【黑马程序员】批量数据提交SqlBuckCopy(学习笔记)
- PL/SQL学习笔记-常量变量及数据类型初步
- MySQL学习笔记之四:插入、更新与删除数据
- SQL学习笔记——SQL中的数据查询语句汇总
- hadoop学习笔记之HiveSQL 数据查询
- 黑马程序员之ADO.NET学习笔记:通过SqlCommand对象执行SQL语句
- Sql语句学习笔记(2)-创建数据表
- [进阶]MySQL学习笔记四数据表外键ForeignKey
- 【数据库学习笔记】Oracle_01_sql*plus,存储结构,用户管理,常用数据类型
- 【Oracle】SQL学习笔记1---基本概念及SELECT语句及提取和排序数据
- 【黑马程序员】C语言学习笔记之基本数据类型(六)
- 黑马程序员之SQL学习笔记:取出表A中第31到第40记录
- 黑马程序员,SQL基础学习笔记
- 黑马程序员之SQL学习笔记