码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-08-13 10:08:25      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:unique   约束   应该   alter   一个   重复数据   维护   str   联合   

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

把学号定义成唯一(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中让两个字段不同时相同的方法

标签:unique   约束   应该   alter   一个   重复数据   维护   str   联合   

原文地址:http://www.cnblogs.com/cage666/p/7352211.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!