MYSQL对外键的约束要求

MYSQL对外键的约束要求_第1张图片

MYSQL对外键的约束要求_第2张图片

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 symbolMYSQL会自动生成一个名字。

    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

啥也不做


你可能感兴趣的:(MYSQL对外键的约束要求)