-
你可以写一个触发器来实现它。
DELIMITER //
CREATE TRIGGER CatDelete AFTER DELETE ON categories
FOR EACH ROW BEGIN
DELETE FROM categories WHERE parent_id = old.id;
END//
DELIMITER ;
-
你可以
ALTER
将MyISAM表导入InnoDB,然后使用
ON DELETE CASCADE
选项。
ALTER TABLE categories ENGINE=InnoDB;
ALTER TABLE categories ADD CONSTRAINT
FOREIGN KEY (parent_id) REFERENCES categories (id) ON DELETE CASCADE;
关于你的评论,我首先要检查的是你是否有一些孤儿类别,即
parent_id
指向不存在的行。这将阻止您创建约束。
SELECT c1.*
FROM categories c1
LEFT OUTER JOIN categories c2
ON (c1.parent_id = c2.id)
WHERE c2.id IS NULL;