且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

外键取值规则,及其级联删除

更新时间:2022-09-13 18:09:28

http://hi.baidu.com/yanzhiyong/blog/item/14b3da8061d5b6d49023d9da.html

今天被外键给整的不行,删除记录时总是出现错误。。

DELETE 语句与 REFERENCE 约束"FK__reply__word_id__7E6CC920"冲突。

该冲突发生于数据库"guest",表"dbo.reply", column 'word_id'。

后来查看才知道:

外键取值规则:空值或参照的主键值。 
(1)插入非空值时,如果主键表中没有这个值,则不能插入。 
(2)更新时,不能改为主键表中没有的值。 
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。

//备注 :
on delete cascade on update cascade(级联更新和删除)
create table reply
{
word_id int foreign key references guest(word_id) on delete cascade on update cascade
}

 

表 ,右建=== 修改表,右键 ===关系   ,打开外键关系


                INSERT 和 UPDATE 规范类别 

展开以显示有关该关系的“删除规则”和“更新规则”的信息。

删除规则

指定当数据库的最终用户尝试删除某一行,而该行包含外键关系所涉及的数据时所发生的情况。如果设置为:

  • 无操作    显示一条错误信息,告知用户不允许执行该删除操作,DELETE 将被回滚。

  • 级联    删除包含外键关系中所涉及的数据的所有行。

  • 设置空    如果表的所有外键列都可接受空值,则将该值设置为空。仅适用于 SQL Server 2005。

  • 设置默认值    如果表的所有外键列均已定义默认值,则将该值设置为列定义的默认值。仅适用于 SQL Server 2005。

更新规则

指定当数据库的用户尝试更新某一行,而该行包含外键关系所涉及的数据时所发生的情况。如果设置为:

  • 无操作    显示一条错误信息,告知用户不允许执行该删除操作,DELETE 将被回滚。

  • 级联    删除包含外键关系中所涉及的数据的所有行。

  • 设置空    如果表的所有外键列都可接受空值,则将该值设置为空。仅适用于 SQL Server 2005。

  • 设置默认值    如果表的所有外键列均已定义默认值,则将该值设置为列定义的默认值。仅适用于 SQL Server 2005。

     

 

本文转自火地晋博客园博客,原文链接:http://www.cnblogs.com/yelaiju/archive/2010/08/25/1807852.html,如需转载请自行联系原作者