INSERT IGNORE或主键MySQL

时间:2016-03-02 19:27:16

标签: mysql

我的ClassSelector DB中有三个表:

students

student_id(P_key) | student_name | hometown

classes

class_id(P_key) | classname | description

student_x_class

student_id | class_id | classname

我想让学生进入课堂,但是要防止同一班学生两次入学。我试过INSERT IGNORE,但这阻止了我进入两个不同班级的同一个学生。我在student_x_class表中没有主键。我可以student_idclass_id主键吗?

我想真正的问题是如何为两列(Student_idclass_id)创建一个唯一值?

1 个答案:

答案 0 :(得分:2)

您可以将它们声明为主键或唯一键:

create table student_x_class (
    student_id int not null,
    class_id int not null,
    primary key (student_id, class_id),
    constraint fk_sxc_student foreign key (student_id) references students(student_id),
    constraint fk_sxc_class foreign key (class_id) references classes(class_id)
);

您也可以将组合声明为unique