MySQL如何保证多字段唯一
推荐课程:MySQL教程
mysql中有些表有时需要做一些字段的唯一约束,当然你也可以在insert前判断有无的方式来防止重复,如果不想额外增加代码来更灵活的实现一些字段的唯一约束,mysql提供了两种方式:
1.unique key
alter table xx
add unique key no_account(no,collection_account)
2.unique index
alter table xxadd unique no_account_index(no,collection_account);
假设有一个需求是用户给评论点赞,数据库设计是三张表,用户表t_user,评论表t_comment,点赞表t_praise,其中点赞表中有两个外键分别是user_id和comment_id,分别关联用户表的用户id和评论表的评论id,然后规定一个用户只能给同一条评论点赞一次,有一种实现方式就是在插入点赞表之前,先通过user_id和comment_id查询是否有点赞记录,如果没有的话,再执行插入操作,否则返回您已经点过赞了.这样实现的话就会多一次数据库查询操作.更好的实现是,修改点赞表的user_id和comment_id为唯一约束,即这两列不能同时相同,这样在执行插入操作的话,如果已经点过赞了,数据库会抛出违反了唯一键约束,这样的话,就可以避免多一次数据库查询操作了.具体设置多列为唯一约束的语句是:
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如何保证多字段唯一的详细内容,更多请关注其它相关文章!
上一篇: php session 过期时间如何设置
下一篇: html表格边框颜色怎么设置
推荐阅读
-
mysql为字段添加和删除唯一性索引(unique) 的方法
-
MySQL如何为字段添加默认时间浅析
-
mysql中如何给字符型的数字字段进行排序?(实例)
-
MySQL如何添加和删除字段?
-
C# ASP.NET+MySQL数据库命名了1个long字段,和C#的保留字重名,并且和MySQL数据库的关键字重名,如何用Parameters.AddWithValue方法插入新记录到数据库
-
如何使用MySQL一个表中的字段更新另一个表中字段
-
MySQL 到底是如何做到多版本并发的?
-
mysql如何根据某一张表的字段更新另一张表的字段?
-
告别硬编码,mysql 如何实现按某字段的不同取值进行统计
-
MySQL是如何保证数据的完整性