UNIQUE KEY
是否可以在其中创建一个多列MySQL
,其中只有当 1 列不是默认值时它才是唯一的,即。
UNIQUE KEY (`col1`, `col2` IS NOT DEFAULT)
或者
UNIQUE KEY (`col1`, `col2` = 1 )
...
我有一个这样的表结构 -
CREATE TABLE IF NOT EXISTS `student_chapters` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`student_id` INT NOT NULL,
`chapter_id` INT NOT NULL,
`primary` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY (`student_id`,`chapter_id`);
学生可以有多个“章节”,但只有一个可以是“初级”。因此,如果我有以下 3 行student_id
=> 1
,
id | student_id | chapter_id | primary
1 1 1 0
2 1 2 0
3 1 3 1
我可以插入这个(主要是 0 [默认])-
id | student_id | chapter_id | primary
4 1 4 0
但不是这个(主要是1)
id | student_id | chapter_id | primary
4 1 4 1
因为第 3 行已经存在唯一键 ( student_id
=>1, primary
=1)。
如果UNIQUE KEY
像这样是不可能的,还有其他方法可以做到这一点吗?