Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL

今天在使用Navicat for mysql设计表时,在设置外键的时候,删除时和更新时两列有四个值可以选择:CASCADE、NO ACTION、RESTRICT、SET NULL,自己全亲自试了一遍,它们的区别如下:

  • CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
  • SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
  • RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
  • NO ACTION:同 RESTRICT,也是首先先检查外键;
空、RESTRICT、NO ACTION 删除:从表记录不存在时,主表才可以删除,删除从表,主表不变。
更新:从表记录不存在时,主表菜可以更新,更新从表,主表不变。
CASCADE 删除:删除主表时自动删除从表。删除从表,主表不变。
更新:更新主表时自动更新从表。更新从表,主表不变。
SET NULL 删除:删除主表时自动更新从表为NULL,删除从表,主表不变。
更新:更新主表时自动更新从表值为NULL。更新从表,主表不变。

下面举一个小例子帮助理解:

(1)在数据库bookshop中我新建了表a如下:

设置外键:

(2)在数据库bookshop中我新建了表b如下:

(3)给a、b表插入记录如下:

这里:a表id2字段为外键字段,参看b表的主键,所以b表是父表,a表是子表;然后分别在设置a表外键的时候设置不同的四个值,就可以得出我上述的结论。

到此这篇关于Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL的文章就介绍到这了,更多相关Mysql CASCADE NO ACTION RESTRICT SET NULL内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL外键设置的方法实例

    一.外键设置方法 1.在MySQL中,为了把2个表关联起来,会用到2个重要的功能:外键(FOREIGN KEY)和连接(JOIN).外键需要在创建表的阶段定义,连接可以通过相同意义的字段把2个表连接起来,用在查询阶段. 2.假设有2个表,分别是表A和表B,它们通过一个公共字段id 发生关联关系,我们把这个关联关系叫做R.如果id在表A中是主键,那么表A就是这个关系R中的主表,相应的,表B就是这个关系中的从表,表B中的id,就是表B用来引用表A中数据的,叫外键.所以,外键就是从表中用来引用主表中数

  • 新手必学的mysql外键设置方式

    目录 外键的作用 mysql外键设置方式 总结 外键的作用 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据. 使两张表形成关联,外键只能引用外表中的列的值! 例如: a b 两个表 a表中存有 客户号,客户名称 b表中存有 每个客户的订单 有了外键后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x 建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键). 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键表名

  • Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL

    今天在使用Navicat for mysql设计表时,在设置外键的时候,删除时和更新时两列有四个值可以选择:CASCADE.NO ACTION.RESTRICT.SET NULL,自己全亲自试了一遍,它们的区别如下: CASCADE:父表delete.update的时候,子表会delete.update掉关联记录: SET NULL:父表delete.update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null: RESTRICT:如果想要删

  • mysql外键基本功能与用法详解

    本文实例讲述了mysql外键基本功能与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是外键 外键的增加 外键的修改和删除 外键的约束模式 首发日期:2018-04-12 什么是外键: 外键就是表中存在一个字段指向另外一个表的主键,那么这个字段就可以称为外键. 一张表可以有多个外键. 外键用于约束表与表之间的关系,可以说外键是表之间的映射关系,这个关系可以帮助我们处理表之间关系的紧密性和存在性(比如学生表的cid班级号与班级表的id建立关联,cid应该不能为不存在的,如果不增加外键cid

  • MySQL外键约束的实例讲解

    MySQL的外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化.从这个特点来看,它主要是为了保证表数据的一致性和完整性的. 对于两个通过外键关联的表,相关联字段中主键所在的表是主表,也称之为父表,外键所在的表是从表,也称之为子表,定义外键的时候需要遵守几个规则: 1.父表必须已经存在于数据库中,或者是当前正在创建的表.如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照. 2.必须为父表定义主键. 3.主键不能包含空值,但允许在外键中出现

  • MySQL外键级联的实现

    目录 简介 示例 一.首先创建两张表stu,sc 二.向两张表插入数据 简介 MySQL外键起到约束作用,在数据库层面保证数据的完整性.例如使用外键的CASCADE(cascade串联)类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时,子表会更新或删除记录,这个过程是数据库层面完成的.早期企业系统数据库设计里面比较多,虽说帮程序员节省了delete.update操作,实际上增加了潜规则,也增加了软件复杂度,也会减弱性能. 所以在应用程序设计中,我们应尽量在应用层

  • MySQL外键使用详解

    最近有开始做一个实验室管理系统,因为分了几个表进行存储·所以要维护表间的关联··研究了一下MySQL的外键. (1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持外键约束 (2)外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作: (3)外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据. 使两张表形成关联,外键只能引用外表中的列的值! (4)建立外键的前提: 两个表必须是InnoDB表类型. 使用在外键关系的域必须为索

  • MySQL外键使用及说明详解

    一.外键约束 MySQL通过外键约束来保证表与表之间的数据的完整性和准确性. 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持): 2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立: 3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以: 外键的好处: 可以使得两张表关联,保证

  • 关于MySQL外键的简单学习教程

    在MySQL中,InnoDB引擎类型的表支持了外键约束. 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持): 2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立: 3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以: 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些

  • 深入mysql外键关联问题的详解

    今儿继续再看老师给推荐的深入浅出mysql数据库开发这本书,看到innodb数据库的外键关联问题时,遇到了一个问题,书上写的是可以对父表进行修改,从而同步到子表的外键上去,可是自己的实验却是没有能够. 复制代码 代码如下: mysql> show create table country\G*************************** 1. row ***************************       Table: countryCreate Table: CREATE

随机推荐