该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
MYSQL支持数据库的参照完整性约束吗?
有四个表:
表一的主键是的表二外键
表二的主键是表三的外键
表三的主键是表四的外键
请问:
如果:删除表一
表2 3 4 会自动删除吗?
---------------------------------------------------------------
从 3.23.43b 开始 InnoDB 支持外键约束特性。
InnoDB 表类型第一次为 MySQL 提供了外键约束以保证你的数据完整性。
InnoDB 中外键约束的定义语法如下所示:
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES table_name (index_col_name, ...)
[ON DELETE {CASCADE ¦ SET NULL ¦ NO ACTION
¦ RESTRICT}]
[ON UPDATE {CASCADE ¦ SET NULL ¦ NO ACTION
¦ RESTRICT}]
从 3.23.50 开始,
可能联合 ON DELETE CASCADE 或 ON DELETE SET NULL 子句与外键约束一同作用。
相应的 ON UPDATE 选项将从 4.0.8 开始支持。
如果 ON DELETE CASCADE 被指定,当主表中的记录行被删除时,
InnoDB 将自动删除子表中被引用键值与主表中相对应的外键值相同的记录。
如果 ON DELETE SET NULL 被指定,子表中的外键对应行将被设置为 NULL 值。
示例:
CREATE TABLE parent(id INT NOT NULL,
PRIMARY KEY (id)) TYPE=INNODB;
CREATE TABLE child(id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
) TYPE=INNODB;