delete cascadeMySQL:探索ON DELETE CASCADE功能(mysql支持on)

MySQL支持一种强大功能,叫做 `ON DELETE CASCADE`。它允许开发人员管理一组相关表的数据一起处理,方便、快捷、高效。

在大多数数据库中,外键是一种用来在不同表之间建立关系的对象。当要删除一行数据时,必须删除与之关联的行,否则将会出现数据库完整性错误。然而,`ON DELETE CASCADE`功能允许一次性删除所有与记录关联的三行数据。

首先,假设我们有三个表,即 `user`、`job` 以及 `order`。`user` 表的 PRIMARY KEY 被当作外键在 `job` 表和 `order` 表中使用。现在假设我们想要删除某个 `user_id` 为 5 的用户。

-- user
CREATE TABLE user (
user_id BIGINT NOT NULL AUTO_INCREMENT,
name VARCHAR (255),
PRIMARY KEY (user_id)
);

-- job
CREATE TABLE job (
id BIGINT NOT NULL AUTO_INCREMENT,
job_name VARCHAR (255),
user_id BIGINT,
FOREIGN KEY (user_id) REFERENCES user (user_id),
PRIMARY KEY (id)
);

-- order
CREATE TABLE orders (
id BIGINT NOT NULL AUTO_INCREMENT,
order_name VARCHAR (255),
user_id BIGINT,
FOREIGN KEY (user_id) REFERENCES user (user_id),
PRIMARY KEY (id)
);

如果使用 `ON DELETE CASCADE`,则只需要在创建外键时将 `ON DELETE CASCADE` 添加到 `job` 表和 `order` 表中的外键中。

  -- job
CREATE TABLE job (
id BIGINT NOT NULL AUTO_INCREMENT,
job_name VARCHAR (255),
user_id BIGINT,
FOREIGN KEY (user_id) REFERENCES user (user_id) ON DELETE CASCADE,
PRIMARY KEY (id)
);

-- order
CREATE TABLE orders (
id BIGINT NOT NULL AUTO_INCREMENT,
order_name VARCHAR (255),
user_id BIGINT,
FOREIGN KEY (user_id) REFERENCES user (user_id) ON DELETE CASCADE,
PRIMARY KEY (id)
);

一旦添加了`ON DELETE CASCADE`,当 `user_id` 为 5 的用户被删除时,所有该用户的 `job` 表和 `order` 表的记录将被一起删除。

可以看到,`ON DELETE CASCADE` 功能是一种强大的工具,可以节省开发人员的大量时间,使客户端的管理更加有效。


数据运维技术 » delete cascadeMySQL:探索ON DELETE CASCADE功能(mysql支持on)