gpt4 book ai didi

mysql - 具有可为空列的唯一约束

转载 作者:可可西里 更新时间:2023-11-01 07:24:08 26 4
gpt4 key购买 nike

我有一个包含嵌套类别的表格。我想避免在同一级别的项目上重复名称(即,具有相同父级的类别)。我带来了这个:

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 的类别)执行我的规则。有合理的解决方法吗?

最佳答案

合理的解决方法可能包括

  • 如果更新/插入操作对速度不重要,则使用触发器检查约束
  • 使用某种特殊值来表示null;这可以相对正确地建模 - 有一个永远不会被删除的 id 0 的根节点,有 parent_id DEFAULT 0 和 ON DELETE SET DEFAULT

关于mysql - 具有可为空列的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2996834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com