在MYSQL中怎样把某字段(已存在)唯一化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MYSQL中怎样把某字段(已存在)唯一化相关的知识,希望对你有一定的参考价值。

你用那个图形界面的软件,来加就可以了,应该在索引那一栏里面,自己写语句修改表,弄不好会出错的,还麻烦。
1.建表时加上唯一性约束
CREATE TABLE `t_user` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(18) NOT NULL unique,
`password` varchar(18) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;
2.给已经建好的表加上唯一性约束
ALTER TABLE `t_user` ADD unique(`username`);
我机器上没有数据库,没验证这2个sql,不晓得行不行,大概是这样的吧。

有些人用程序来给数据做约束的,比如约束用户名,
DataSet ds = dao.queryForDataSet(connName,"select * from t_user where username=? and password=?",new Object[]username,password,0,0,false);
if(ds.size()==1)
//登陆成功
else if(ds.size()>1)
//冻结此账户,记录错误日志
else
//告知用户账号不存在或者密码错误

插入用户之前事先查询一下这个用户是否存在,可以用ajax做验证账号是否重复的效果,很多网站都是这么干的
参考技术A 删除重复的数据,可以吗?
然后设置一个唯一索引。

Odoo中给字段填加唯一性约束

参考技术A 在进行Odoo二次开发的时候,经常会遇到一些字段要进行唯一性验证,例如学生档案管理系统中学生信息的学号,业务管理系统中的一些业务标识字段。

例如最近在开发一款基于车辆的业务系统,所有业务订单都是基于一辆车辆进行的,为避免不同业务员输入同一车辆的订单,就需要在业务员录入车辆号的时候对车牌号进行唯一性验证,如果系统中已经存在该车辆车牌号则跳出提示,阻止该业务的录入。

如何实现Odoo中这种字段唯一值的约束呢?

首先,我们定义一个普通字段cph,如下:

cph = fields.Char('车牌号')

接下来,我们在_sql_constraints中添加对应的约束定义,如下:

_sql_constraints = [ ('check_uniq_cph', 'unique(cph)', '车牌号已经存在!')   ]  

括号中三个参数依次是约束定义名、约束定义内容、弹出提醒内容。

在_sql_constraints定义中可以填写多个字段的约束定义,每个用()包裹,之间用逗号分隔开即可。

这样,在输入重复的车牌号后点击保存时,系统则跳出下面的提示框,并停止保存动作:

以上是关于在MYSQL中怎样把某字段(已存在)唯一化的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL怎样设置字段为不可重复

怎样用SQL语句对指定字段建立非空约束?

mysql 中如何把某字段中不需要的字符串删除? 如:'120 [手机 中国电信CDMA]' ,删除[手机 中国电信CDMA]

mysql创建索引的原则

mysql 中如何给已存在的表中字段增设置主键?

MySQL - 使现有字段唯一