mysql中的外键

mysql中的外键

1.默认的外键存在之后,会对数据进行约束。

 1)约束1:如果子表中添加的数据,外键字段对应的数据如果在父表中不存在,那么添加失败。

  

  有数据之后:

  

  修改:可以修改跟外键不相关的任何字段,但是外键字段不能修改(不能修改成一个主表中不存在的值)

  

  2)约束2:父表不能删除(或者修改)一个被子表引用的数据记录

  

3.外键约束

 默认的用户所能看到的约束都是外键的一种约束:严格模式

 外键约束其实有三种模式:都是在约束父表

   严格模式:restrict(默认的),父表不能删除也不能更新(如果被子表引用)

      置空模式:set null,如果父表删除,那么子表中对应的关联的外键就会被置空(set null)

      级联模式:cascade,如果父表更新,那么子表对应的全部变成最新的;如果父表删除,那么子表跟着被删除。(父变子变,父删子删)

 动作约束:删除约束(on delete)和更新约束(on update)

 常用的约束: on delete set null on update cascade(删除父表记录,子表置空;更新父表记录,子表级联更新)

 

 更新父表的主键

 

 删除父表记录

 

 

4.外键条件

  1. 要使用外键,表存储引擎必须是innodb
  2. 外键若要使用置空模式,前提是子表的外键字段允许为空
  3. 外键字段的数据类型必须严格的与父表主键的数据类型一致

 

posted @ 2016-02-19 15:03  bybelief  阅读(174)  评论(0编辑  收藏  举报