我的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_id
和class_id
主键吗?
我想真正的问题是如何为两列(Student_id
,class_id
)创建一个唯一值?
答案 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
。