mysql - 将第一个数据插入到递归sql表中

标签 mysql sql phpmyadmin

我有下表:

Create Table if not exists Categories(
    category_id int (10) primary key NOT NULL AUTO_INCREMENT,
    category_name varchar (20) NOT NULL,
    parent_category_id int (10) NOT NULL,   
    FOREIGN KEY (parent_category_id) REFERENCES Categories(category_id) ON DELETE CASCADE)

该表包含我网站上的每个类别 - 每个类别都有一个父类别(例如“计算机”是“编程”的父类别) 我有几个没有任何父类别的顶级类别 =>parent_category_id =0

我的问题是如何插入顶级类别的数据。 当我尝试这样做时:

INSERT INTO  `databaseproject`.`categories` (`category_id` ,`category_name` ,`parent_category_id`)
VALUES (NULL ,  'computers',  '0')

我收到错误:

#1452 - Cannot add or update a child row: a foreign key constraint fails (`databaseproject`.`categories`, CONSTRAINT `categories_ibfk_1` 
FOREIGN KEY (`parent_category_id`) REFERENCES `categories` (`category_id`) ON DELETE CASCADE) 

如何插入这些类别?

最佳答案

使parent_category_id可为空,并且父类别的parent_category_id为空,或者添加id为0的根行。

关于mysql - 将第一个数据插入到递归sql表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16365401/

相关文章:

mysql - SQL:使用 UNION 或子查询后无法使用 UPDATE 子句,而类似的 SELECT 仍然有效

mysql - 如何在不使用 UNION ALL 的情况下简化查询?

用于获取每小时计数的 MySQL 查询

mysql - 删除 MySQL 中的动态管理表

相当于R查询的sql

mysql - 在 GROUP BY 之前进行 ORDER BY

php - Laravel Eloquent 创建于

php - WordPress:显示所有类别的帖子,每个类别最多 5 个帖子,并按日期排序?

mysql - 在sql中使用join的多个总和

mysql - 如何将 phpmyadmin 中的数据库类型从 mariadb 更改为 mysql?