MySQLInnoDB存储引擎支持外键约束,在创建外键时,要求父表必须有对应的索引,子表在创建外键时,也会自动的创建对应的索引。
关联外键
建表时关联外键
[CONSTRAINT [symbol]] FOREIGN KEY
[idx_name] (idx_col_name, ...)
REFERENCES tab_name (idx_col_name,...)
[ON DELETE ref_op]
[ON UPDATE ref_op]
alter关联
ALTER TABLE child_tab ADD CONSTRAINT [symbol] FOREIGN KEY(idx_col_named) REFERENCES parent_tab(idx_col_name) [ON DELETE ref_op] [ON UPDATE ref_op]
ref_op可选值
RESTRICT | CASCADE | SET NULL | NO ACTION
CASCADE :
从父表中删除或更新对应的行,同时自动的删除或更新自表中匹配的行。ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持。
SET NULL :
从父表中删除或更新对应的行,同时将子表中的外键列设为空。注意,这些在外键列没有被设为NOT NULL时才有效。ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持。
NO ACTION :
InnoDB拒绝删除或者更新父表。
RESTRICT :
拒绝删除或者更新父表。指定RESTRICT(或者NO ACTION)和忽略ON DELETE或者ON UPDATE选项的效果是一样的。
SET DEFAULT :
InnoDB目前不支持。