• 外键用于与另一张表的关联,是能确定另一张表记录的字段,用于保持数据的一致性。
  • 比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
  • 表的外键大多是另一表的主键,外键可以有重复的,可以是空值
  • 用来和其他表建立联系用的
  • 一个表可以有多个外键
  • 外键默认的作用有两点:一个对父表,一个对子表(外键字段所在的表)

  • 对子表约束:子表数据进行写操作(增和改)的时候,如果对应的外键字段在父表找不到对应的匹配,那么操作会失败(约束子表数据操作)

  • 对父表约束:父表数据进行写操作(删和改:都必须涉及到主键本身),如果对应的主键在子表中已经被数据所引用,那么就不允许操作
  • 外键约束有三种约束模式:都是针对父表的约束
    • District:严格模式(默认),父表不能删除或者更新一个已经被子表数据引用的记录
    • Cascade:级联模式:父表的操作,对应子表关联的数据也跟着被删除;即直接删除父表(主键所在表),子表相应记录也同时被删除
    • Setnull:置空模式:父表的操作之后,子表对应的数据(外键字段)被置空