2016-03-02 53 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代替。