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
ようなことが不可能な場合、これを行う別の方法はありますか?