1、什么时候需要用到外键索引呢?
答:A表中存在唯一索引id_a,B表中的字段包含id_a,由于B表自身已经有主键索引,此时如果将字段id_a设置为外键索引索引(foreign key),则建立外键索引。
使用场景:
(1)父表更新时,子表也更新;父表删除时,如果
(2)子表有匹配的项,则删除失败。
(3)父表更新时,子表也更新;父表删除时子表匹配的项也删除。
即:使用外键可以使得修改或者删除的级联操作的日常维护工作更加轻松。
2、创建语法
[CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) REFERENCES tbl_name(index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION
(外键值最直接的作用)如果子表试图创建一个父表不存在的外键值,InnoDB会拒绝任何INSERT或者UPDATE操作。
如果父表试图UPDATE或者DELETE任何子表中存在或匹配的外键值,最终动作取决于外键约束定义中