foreign key(a) references table_name(b) on update cascade on delete cascade
on update cascade 是级联更新的意思on delete cascade 是级联删除的意思意思是当你更新或删除主键表时,那么外键表也会跟随一起更新或删除
外键的定义语法:
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字。
ON DELETE、ON UPDATE表示事件触发限制,可设参数:
① RESTRICT(限制外表中的外键改动,默认值)
② CASCADE(跟随外键改动)
③ SET NULL(设空值)
④ SET DEFAULT(设默认值)
⑤ NO ACTION(无动作,默认的,SQL的标准关键字与RESTRICT相同)
外键约束对父表的含义:
在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时候所指定的on update/on delete子句参数。
关键字 | 含义 |
CASCADE | 删除包含与已删除键值有参照关系的所有记录 |
SET NULL | 修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于子表当中未标记为NOT NULL的字段) |
RESTRICT | 拒绝删除要求,直到使用删除键值的辅助子表已经被手工删除,并且没有参照时(这是默认设置,也是最安全的设置) |
NO ACTION | 啥也不做 |