如何在MySQL中为多个列指定唯一约束?
我有一张桌子:
table votes (id,user,email,address,primary key(id),
);
现在,我想使列的用户,电子邮件,地址唯一(在一起)。
如何在MySql中执行此操作?
- 当然,这个例子仅仅是……一个例子。 因此,请不要担心语义。
#1楼
如果您想避免将来重复。 创建另一个列,例如id2。
UPDATE tablename SET id2 = id;
现在在两列上添加唯一性:
alter table tablename add unique index(columnname, id2);
#2楼
这适用于MySQL 5.5.32版
ALTER TABLE `tablename` ADD UNIQUE (`column1` ,`column2`);
#3楼
您可以通过phpMyAdmin添加多列唯一索引。 (我在4.0.4版中进行了测试)
导航到目标表的结构页面。 将唯一索引添加到列之一。 展开结构页面底部的“ 索引”列表,以查看刚刚添加的唯一索引。 单击编辑图标,然后在下面的对话框中可以向该唯一索引添加其他列。
#4楼
要添加唯一索引,需要执行以下操作:
1)table_name
2)index_name
3)要在其上添加索引的列
ALTER TABLE `tablename`
ADD UNIQUE index-name
(`column1` ,`column2`,`column3`,...,`columnN`);
在您的情况下,我们可以如下创建唯一索引:
ALTER TABLE `votes`ADD
UNIQUE <votesuniqueindex>;(`user` ,`email`,`address`);
#5楼
MySql 5或更高版本的行为如下(我刚刚测试过):
- 您可以定义涉及空列的唯一约束。 假设您定义一个唯一的约束(A,B),其中A不可为空,而B为
- 在评估这样的约束时,您可以拥有(A,null)任意次(相同的A值!)
- 您只能有一对(A,不能为空B)
范例:PRODUCT_NAME,PRODUCT_VERSION'glass',null'glass',null'wine',1
现在,如果您尝试再次插入(“葡萄酒” 1),它将报告违反约束的情况。
#6楼
如果行中有NULL值,则多列唯一索引在MySQL中不起作用,因为MySQL将NULL视为唯一值,并且至少当前在多列索引中没有逻辑可解决。 是的,这种行为是疯狂的,因为它限制了多列索引的许多合法应用程序,但事实就是如此……到目前为止,它是一个已在MySQL上标有“无法修复”的错误错误跟踪...
#7楼
我有一个MySQL表:
CREATE TABLE `content_html` (`id` int(11) NOT NULL AUTO_INCREMENT,`id_box_elements` int(11) DEFAULT NULL,`id_router` int(11) DEFAULT NULL,`content` mediumtext COLLATE utf8_czech_ci NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `id_box_elements` (`id_box_elements`,`id_router`)
);
并且UNIQUE KEY可以按预期工作,它允许id_box_elements和id_router的多个NULL行。
我正在运行MySQL 5.1.42,因此上面讨论的问题可能有一些更新。 幸运的是,它可以正常工作,并且希望它将保持这种状态。
#8楼
我这样做是这样的:
CREATE UNIQUE INDEX index_name ON TableName (Column1, Column2, Column3);
我对唯一index_name
约定是TableName_Column1_Column2_Column3_uindex
。
#9楼
如果要在mysql中创建表,请使用以下命令:
create table package_template_mapping (
mapping_id int(10) not null auto_increment ,
template_id int(10) NOT NULL ,
package_id int(10) NOT NULL ,
remark varchar(100),
primary key (mapping_id) ,
UNIQUE KEY template_fun_id (template_id , package_id)
);
#10楼
ALTER TABLE `votes` ADD UNIQUE `unique_index`(`user`, `email`, `address`);
#11楼
你尝试过这个吗?
UNIQUE KEY `thekey` (`user`,`email`,`address`)
如何在MySQL中为多个列指定唯一约束?相关推荐
- mysql count 返回0_如何在MySQL中使用COUNT時返回0而不是null
我正在使用此查詢返回存儲在$ sTable中的歌曲列表以及存儲在$ sTable2中的總項目的COUNT.如何在MySQL中使用COUNT時返回0而不是null /* * SQL queries * ...
- mysql alert on delete cascade_如何在mysql中删除级联使用?(How do I use on delete cascade in mysql?)...
如何在mysql中删除级联使用?(How do I use on delete cascade in mysql?) 我有一个组件数据库. 每个组件都是特定的类型. 这意味着组件和类型之间存在多对一的 ...
- 如何在MySQL中重置AUTO_INCREMENT?
本文翻译自:How to reset AUTO_INCREMENT in MySQL? How can I reset the AUTO_INCREMENT of a field? 如何重置字段的AU ...
- 如何在MySQL中查询OS线程id(LWP)?
如何在MySQL中查询OS线程id(LWP)? [root@LHRDB ~]# ps -Lf 16833 UID PID PPID LWP C NLWP STIME TTY ...
- mysql data ibdata1_database - 如何在MySQL中收缩/清除ibdata1文件
database - 如何在MySQL中收缩/清除ibdata1文件 我在localhost中使用MySQL作为在R中执行统计的"查询工具",也就是说,每次运行R脚本时,我创建一个 ...
- 如何在MySQL中声明变量?
本文翻译自:How to declare a variable in MySQL? How to declare a variable in mysql, so that my second quer ...
- MySQL中使用CASE出错,如何在MySQL中正确使用CASE..WHEN
如何在MySQL中正确使用CASE..WHEN 这里是一个演示查询,注意它非常简单,仅在base_price为0的位置获取,并且仍然select条件3: SELECT CASE course_enro ...
- 如何在MySQL中设置主从复制
原作者:Etel Sverdlov 转载&翻译:https://www.digitalocean.com/community/tutorials/how-to-set-up-master-sl ...
- 如何在MySQL中创建新用户并授予权限
原作者:Etel Sverdlov 转载&翻译来源:https://www.digitalocean.com/community/tutorials/how-to-create-a-new- ...
最新文章
- 递归的妙用—遍历子控件
- 中国计算机学会第七届全国Web信息系统及其应用学术会议(WISA2010)征文通知
- 看Kubernetes源码,学习怎么用Go实现调度队列
- 基于RV1126平台imx291分析 --- media部件注册 rkcif_mipi
- bash脚本运行报错问题原因及解决方法
- “焊”卫锂电 | 昂视锂电池密封钉视觉检测应用详解
- 词语相似度分析(《知网》、同义词词林、word2vec)
- c语言小游戏跳一跳代码及注释,c语言小游戏程序之弹跳小球的实现代码
- c语言 输入两个正整数m和n,求其最小公倍数。
- 【嵌入式13】两台电脑串口通信
- 自然语言处理--keras实现一维卷积网络对IMDB 电影评论数据集构建情感分类器
- 【虚幻引擎】UE4/UE5科大讯飞文字合成语音
- 使用记账软件,记录每笔消费和收入操作简单
- vue网页打印针式打印机内容显示不全
- 【每周一读】——你的孤独,虽败犹荣
- Axure RP 基础元件
- html 音乐 QQ播放器 外链 代码 播放器 外链 代码
- 高考学测计算机不合格会怎样,学业水平测试不过咋办 能参加高考吗
- Zynq7020_PS端 uart驱动编写及Vivadio-SDK配置
- 基于php的网络数据包分析工具的设计与开发
热门文章
- sql语句练习50题(Mysql版-详加注释)
- 十大Material Design开源项目
- 如何利用Partitioner将消息路由到分区?
- 传输层端口号的范围是多少?被分为哪两部分_Cu2ZnSnS4纳米晶做空穴传输层经配体改性将低温可喷涂碳电极基钙钛矿太阳能电池的性能提高到17.71...
- SpringBoot------全局异常捕获和自定义异常
- javascript DOM 编程艺术----笔记
- 机器学习 —— 概率图模型(推理:连续时间模型)
- LeetCode之Sort List
- 代码和产品发布的几种方式
- 常见的CSS属性和值CascadingStyleSheets