gpt4 book ai didi

mysql - 在这种情况下删除级联?

转载 作者:行者123 更新时间:2023-11-29 00:31:06 27 4
gpt4 key购买 nike

我需要关于 ON DELETE CASCADE 是否适合在下表中使用的建议

CREATE TABLE category
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
maincategory INT DEFAULT NULL,
FOREIGN KEY(maincategory) REFERENCES category(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

在这种情况下,如果主类别被删除,ON DELETE CASCADE 将简单地删除所有子类别。这是推荐的方法吗?

最佳答案

您正在尝试创建树结构的表格表示。您正在使用邻接模型,将父级的 ID 存储在 maincategory 字段中(通常称为 parent_id)。

是的,这种方法是完全有效的。使用 ON DELETE CASCADE 可以保护自己免受 DELETE 异常的影响。

我还建议您阅读有关嵌套集的内容 - 这是一种在 SQL 中表示树的非常有效的技术:

http://www.evanpetersen.com/item/nested-sets.html

How to represent a data tree in SQL?

http://en.wikipedia.org/wiki/Nested_set_model

还有这本书:Joe Celko “聪明人的 SQL 中的树和层次结构”

关于mysql - 在这种情况下删除级联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16469475/

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