【发布时间】:2013-01-03 12:28:18
【问题描述】:
我用 FOREIGN KEY 创建了表,但不能插入任何东西。
CREATE TABLE menus (
id int(10),
parent_id int(10),
label varchar(255),
PRIMARY KEY (id),
FOREIGN KEY (parent_id) REFERENCES menus (id)
);
我需要 FOREIGN KEY 在删除父级时自动删除子级。此表已成功创建,但我无法插入任何内容。
INSERT INTO `menus` (`parent_id`, `label`)
VALUES ('1', 'label1');
或
INSERT INTO `menus` (`label`)
VALUES ( 'label1');
#1452 - Cannot add or update a child row: a foreign key constraint fails
我真的不想在 php 代码中寻找任何孩子,所以我需要以某种方式创建一个包含 3 列的简单表格,并自动删除所有孩子和他们的孩子。
【问题讨论】:
-
您说要“自动删除子项”,但您向我们展示的只是插入内容。你的问题到底是什么?
-
通常,您需要允许“根”记录有一个空父记录 - 即
menus.parent_id应该可以为空,而“根”菜单项将有一个空parent_id。 -
您希望 id 具有哪些值?我没有看到它们中的任何一个插入或自动生成
-
我认为你错过了 id 列的自动增量
标签: mysql foreign-keys cascade