当前第2页 返回上一页
在修改表时添加唯一约束的语法格式为:
1 | ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
|
修改数据表 tb_dept1,指定部门的名称唯一,输入的 SQL 语句和运行结果如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql> ALTER TABLE tb_dept1
-> ADD CONSTRAINT unique_name UNIQUE(name);
Query OK, 0 rows affected (0.63 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | NO | UNI | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
|
假设有一个需求是用户给评论点赞,数据库设计是三张表,用户表t_user,评论表t_comment,点赞表t_praise,其中点赞表中有两个外键分别是user_id和comment_id,分别关联用户表的用户id和评论表的评论id,然后规定一个用户只能给同一条评论点赞一次,有一种实现方式就是在插入点赞表之前,先通过user_id和comment_id查询是否有点赞记录,如果没有的话,再执行插入操作,否则返回您已经点过赞了.这样实现的话就会多一次数据库查询操作.更好的实现是,修改点赞表的user_id和comment_id为唯一约束,即这两列不能同时相同,这样在执行插入操作的话,如果已经点过赞了,数据库会抛出违反了唯一键约束,这样的话,就可以避免多一次数据库查询操作了.具体设置多列为唯一约束的语句是:
1 | UNIQUE KEY <唯一约束名>(<列名>,...,<列名n>)
|
1 2 3 4 5 6 7 8 | CREATE TABLE `t_praise` (
`id` int(12) unsigned NOT NULL AUTO_INCREMENT,
`comment_id` int(12) NOT NULL,
`user_id` int(12) NOT NULL,
KEY `FK_t_praise_comment` (`comment_id`),
KEY `FK_t_praise_user` (`user_id`),
UNIQUE KEY `UK_praise` (`comment_id`,`user_id`)
)
|
以上就是mysql多字段唯一约束的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
mysql数据库优化需要遵守的原则
mysql收费吗
mysql group多列
mysql索引做什么?
如何解决mysql安装bus error问题
mysql选择合适的备份策略和备份工具
mysql内部临时表的具体使用
分析mysql抛出异常的几种常见解决方式
mysql 的 join 功能弱爆了?
linux下安装mysql-5.6.4 的图文教程
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » mysql多字段唯一约束