Php 如果存在子记录,则防止删除父记录
我有一张分类表Php 如果存在子记录,则防止删除父记录,php,mysql,sql,database,Php,Mysql,Sql,Database,我有一张分类表 CREATE TABLE `tbl_categories` ( `id` int(11) NOT NULL, `name` varchar(100) NOT NULL DEFAULT '0', `parent_id` int(11) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 这就是它在运行后显示带有子类别的类别的方式 我需要防止删除父记录,如果它有一个或几个子记录。如何操作?您可以拥有
CREATE TABLE `tbl_categories` (
`id` int(11) NOT NULL,
`name` varchar(100) NOT NULL DEFAULT '0',
`parent_id` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这就是它在运行后显示带有子类别的类别的方式
我需要防止删除父记录,如果它有一个或几个子记录。如何操作?您可以拥有一个自引用外键,但必须分两个阶段创建它:
create table foo (
id int not null auto_increment primary key,
parent int default null
);
alter table foo add foreign key (parent) references foo (id)
on delete restrict;
您必须将其作为一个单独的
alter
,因为它在表定义本身中不起作用-表在该点上不存在,因此FK验证将失败,不允许创建表。您可以拥有一个自引用外键,但必须分两个阶段创建它:
create table foo (
id int not null auto_increment primary key,
parent int default null
);
alter table foo add foreign key (parent) references foo (id)
on delete restrict;
您必须将其作为一个单独的
alter
,因为它在表定义本身内不起作用-表在该点不存在,因此FK验证将失败,不允许创建表。为什么不使用外键?@berty,我在哪里添加外键?view@Marc B answer;)@伯蒂,谢谢。为什么不用外键?@伯蒂,我在哪里添加外键?查看@Marc B answer;)@伯蒂,谢谢。谢谢,这就是我要找的“自我参照外键”这个词。我不确定是否可以定义自引用外键。让我试试。谢谢你,这就是我要找的词,“自我参照外键”。我不确定是否可以定义自引用外键。让我试试。