0

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`);

生徒は複数の「チャプター」を持つことができますが、「プライマリ」にできるのは 1 つだけです。したがって、student_id=>に対して次の 3 行がある場合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, =1) があるためです。primary

このUNIQUE KEYようなことが不可能な場合、これを行う別の方法はありますか?

4

0 に答える 0