我想为类别创建一个表,如果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]:完整性约束违规:1452无法添加或 更新子行:外键约束失败 (
test
。categories
,CONSTRAINTcategories_ibfk_1
外国 KEY(parent_id
)参考categories
(cat_id
))
我认为这意味着parent_id
不能为0,因为不存在具有该值的cat_id
。我怎样才能解决这个问题或更好地设计我的桌子?
答案 0 :(得分:2)
更改表格,以便parent_id可以为NULL
并使用NULL
代替0
来代表顶级类别。
ALTER TABLE categories
MODIFY COLUMN parent_id INTEGER UNSIGNED NULL DEFAULT NULL;