Mysql中让两个字段不同时相同的方法

Posted 花火·

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql中让两个字段不同时相同的方法相关的知识,希望对你有一定的参考价值。

有时候我们会遇到这样的一种情况:有一些不同的专业,每个专业中有一些不同的学号,专业+学号能对应到个人。这时,应该如何在数据库中定义列,来保证专业+学号对应的学生的唯一性呢?

把学号定义成唯一(UNIQUE)显然是行不通的,因为A专业和B专业都存在1000这样一个学号。

 

方法1:联合主键

PRIMARY KEY(major,id);

不推荐。因为联合主键会给表的维护带来不便。另外,可能已经设定好了主键。

 

方法2:建立联合唯一约束(联合唯一索引)(推荐

联合唯一约束:(创建唯一性约束时会自动创建唯一性索引)

ALTER TABLE student ADD CONSTRAINT major_id UNIQUE (major,id);

联合唯一索引:

CREATE UNIQUE INDEX major_id_index ON student(major,id);

二者的区别:

①当往数据库中插入20条数据,其中5条数据重复时,如果用唯一性约束,结果必然是20条数据全部被拒绝插入。如果使用唯一性索引,若打开了“忽略重复值”开关,则会将15条不重复的数据正确插入,5条重复数据被忽略。

②如果某列多行值为null,则不能在该列上建立唯一性索引。

以上是关于Mysql中让两个字段不同时相同的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 5 中让两个按钮转到同一个 IBOutlet?

变量赋值理解--Pyton中让两个值互换的方法

根据父活动在片段中调用不同的方法

mysql如何去除两个字段数据相同的记录

使用具有不同片段字段的相同中继根查询的多个 react-router-relay 路由

sql语句如何查询一个表中某两个字段的相同数据?