我有一个包含嵌套类别的表。我想避免在同一级别的项目上重复名称(即具有相同父级的类别)。我来这里:
CREATE TABLE `category` (
`category_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`category_name` varchar(100) NOT NULL,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`category_id`),
UNIQUE KEY `category_name_UNIQUE` (`category_name`,`parent_id`),
KEY `fk_category_category1` (`parent_id`,`category_id`),
CONSTRAINT `fk_category_category1` FOREIGN KEY (`parent_id`) REFERENCES `category` (`category_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci
不幸的是,category_name_UNIQUE
没有强制执行我对根级别类别(parent_id
为NULL的规则)的规则。有合理的解决方法吗?
答案 0 :(得分:5)
合理的解决方法可能包括
答案 1 :(得分:2)
据我所知,强制执行是在数据库方面,可能性:
顺便说一句:关于父删除类别被提升为根类别,这是你想要的吗?