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


    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://yelaiju.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Ural1387 Vasya's Dad
    SGU481 Hero of Our Time
    sjtu1590 强迫症
    sjtu1591 Count On Tree
    sjtu1585 oil
    sjtu1364 countcountcount
    sjtu1333 函数时代
    Fabric-ca client端初始化过程源码分析
    Fabric-ca server端与client端交互
    Fabric-ca server端初始化过程源码分析
  • 原文地址:https://www.cnblogs.com/yelaiju/p/1807852.html
Copyright © 2020-2023  润新知