码迷,mamicode.com
首页 > 其他好文 > 详细

05 外键中的Cascading属性(Cascading referential integraty constraint)

时间:2016-01-05 22:29:44      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:

上文中讲到外键约束的作用,tblPerson表中的GenderId是外键,tblGender中的Id是主键。通过设置外键约束可以限制tblPerson中的GenderId的值限定在tblGender表中的Id的取值范围。如下表中所示tblGender中的数据:

Id Gender
1    Male
2    Female
3    Unknown

 

那么tblPerson表中的GenderId列的取值就只能是1、2、3

Id   Name     Email            GenderId Address
1    John    John@gmail.com    1        America
2    Boria    Boria@msn.com    2        North America
3    Judy    Judy@hpe.com      2        Japan
4    July    July@yahoo.com    3        China

 

但是现在我们的问题是如果我们删除tblGender表中的Id为1的数据会如何呢?此时tblPerson表中的第一行John的性别没有可引用的性别。实际上,此时SQL Server是不会允许我们删除tblGender中的数据的。如我们执行 Delete From tblGender Where Id = 1我们会得到如下的报错:

Msg 547, Level 16, State 0, Line 2
The DELETE statement conflicted with the REFERENCE constraint "tblPerson_GenderId_FK". The conflict occurred in database "Sample", table "dbo.tblPerson", column GenderId.
The statement has been terminated.

此时我们通过图形化工具打开tblPerson表中的外键tblPerson_GenderId_FK 会看到在插入和更新(INSERT and UPDATE Specific)下的Delete Rule有4个选项可以选,他们分别是1)No Action 2)Cascade 3)Set Null 4)Set Default

技术分享

下面我们详细介绍这四种选项的意思.

  1)No Action:当删除主键表表中的记录时,外键表不做任何操作。这也是我们创建主外键约束时的默认选项,此时如果删除主键数据会导致异常发生。

  2)Cascade:当删除主键表中的记录时,同时删除引用主键表中的外键表中对应的数据

  3)Set Null:当删除主键表中的记录时,同时设置引用主键表中的外键表的对应数据的值为Null

  4)Set Default:当删除主键表中的记录时,同时设置引用主键表中的外键表的对应数据的值为默认值

05 外键中的Cascading属性(Cascading referential integraty constraint)

标签:

原文地址:http://www.cnblogs.com/kuillldan/p/5103884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!