【问题标题】:INSERT IGNORE or Primary Key MySQL插入忽略或主键 MySQL
【发布时间】:2016-06-15 20:16:28
【问题描述】:

我的 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)?

【问题讨论】:

  • 你可以创建一个 composite PRIMARY(或者 UNIQUE,如果你不是主键)。 ALTER TABLE student_x_class ADD PRIMARY KEY(student_id, class_id); 见:stackoverflow.com/q/8859353

标签: mysql


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    相关资源
    最近更新 更多