gpt4 book ai didi

mysql - 删除一个条目时自动删除一个条目mysql

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:48 26 4
gpt4 key购买 nike

我有一个带有 id 列的用户表

一个包含 id 列和 user_id col 的配置文件表,该列引用用户表中的 id

我想在删除用户时自动删除配置文件。

这在 mysql 中可能吗?

最佳答案

假设 PARENT 和 CHILD 实体之间存在 1 对 N 的关系,因此当您删除 PARENT 时,关联的 CHILD(s) 将根据需要删除。为此,您使用 ON DELETE CASCADE如下所示。

您需要注意的是,根据您的设计,如果 CHILD 实体与一个或多个实体关联,那么您可能会导致意外问题,例如破坏关系、删除关联表中的记录等。另请阅读上面链接中的存储引擎也是如此,你不能使用 MuISAM

家长

CREATE TABLE `parent` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

child

CREATE TABLE `child` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`parent_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`),
KEY `FK_1_idx` (`parent_id`),
CONSTRAINT `FK_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

示例

填充父元素

mysql> INSERT INTO parent (name) VALUES ('parent_1'), ('parent_2');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM parent;
+----+----------+
| id | name |
+----+----------+
| 1 | parent_1 |
| 2 | parent_2 |
+----+----------+
2 rows in set (0.00 sec)

填充子项

mysql> INSERT INTO child (name, parent_id) VALUES ('child_1', 1), ('child_2', 1), ('child_3', 2);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM child;
+----+---------+-----------+
| id | name | parent_id |
+----+---------+-----------+
| 1 | child_1 | 1 |
| 2 | child_2 | 1 |
| 3 | child_3 | 2 |
+----+---------+-----------+
3 rows in set (0.00 sec)

删除

mysql> DELETE FROM parent WHERE name = 'parent_1';
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM child;
+----+---------+-----------+
| id | name | parent_id |
+----+---------+-----------+
| 3 | child_3 | 2 |
+----+---------+-----------+
1 row in set (0.00 sec)

关于mysql - 删除一个条目时自动删除一个条目mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32028493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com