gpt4 book ai didi

mysql - 外键引用本身

转载 作者:行者123 更新时间:2023-11-29 08:14:18 27 4
gpt4 key购买 nike

我想为类别创建一个表,其中如果 parent_id 为 0,则该类别没有父类别。否则,任何类别都可以是另一个类别的父级:

CREATE TABLE categories (
cat_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INTEGER UNSIGNED NOT NULL DEFAULT 0,
title VARCHAR(100) NOT NULL,
valid TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,

PRIMARY KEY(cat_id),
FOREIGN KEY (parent_id)
REFERENCES categories(cat_id)
);

尝试插入新值时出现的问题是:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (test.categories, CONSTRAINT categories_ibfk_1 FOREIGN KEY (parent_id) REFERENCES categories (cat_id))

我认为这意味着 parent_id 不能为 0,因为不存在具有该值的 cat_id。如何解决这个问题或更好地设计我的表格?

最佳答案

更改表,使parent_id 可以为NULL 并使用NULL 而不是0 来表示顶级类别。

ALTER TABLE categories
MODIFY COLUMN parent_id INTEGER UNSIGNED NULL DEFAULT NULL;

关于mysql - 外键引用本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910552/

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