iMisty的技术栈

iMisty的技术栈

mysql基础之外键约束

916
2019-06-15

外键约束

外键约束

  • 只有InnoDB引擎的数据库才支持外键

创建外键

  • 建表时指定外键 [CONSTRAINT 外键名称] FOREIGN KEY (字段名称) REFERENCES 主表(字段名称)

    *   子表的外键字段和主表的字段类型要相似,如果是数值类型要求一致,无符号也要一致,如果是字符型,要求类型一致,长度可以不同
    
    • 如果外键的字段没有创建索引,MySql会自动帮我们添加索引

    • 子表的外键关联必须是父表的主键;

    • 外键约束的参照操作

      1. CASCADE 从父表删除或者更新,子表也跟着删除或者更新,级联的操作;
    1. SET NULL 从父表删除或者更新记录,并设置子表外键列为null;
    2. NO ACTION | RESTRICT 拒绝对父表做更新或者删除操作;
  • 动态添加外键 ALTER TABLE tb_name ADD FOREIGN KEY(外键字段) REFERENCES 主表(主键字段)

注意:动态添加外键之前,表中的数据必须是合法的,没有脏值,否则外键无法正常添加

  • 动态删除外键 ALTER TABLE tb_name DROP FOREIGN KEY fk_name

注意:对于有外键关联的表在进行删除或者更新的时候,需要注意表与表之间的关系,不可以随意进行更新删除