是否可以在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`);
学生可以有多个“章节”,但只有一个可以是“主要”。因此,如果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
不可能,还有另一种方法吗?