MySQL列多列UNIQUE KEY仅在1列不是DEFAULT值时才是唯一的

时间:2013-04-02 03:38:51

标签: mysql unique-key

是否可以在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

,我有以下3行
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不可能,还有另一种方法吗?

0 个答案:

没有答案