2016-03-02 72 views
1

我在ClassSelector DB三个表:INSERT忽略或主键的MySQL

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_id,class_id)设定一个唯一的值?

+1

您可以创建一个* composite * PRIMARY(或UNIQUE,如果您不是主键)。 'ALTER TABLE student_x_class ADD PRIMARY KEY(student_id,class_id);'See:http://stackoverflow.com/q/8859353 –

回答

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代替。