mysql多字段唯一约束


当前第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》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...