美文网首页MYSQL学习
MySQL添加唯一索引避免重复

MySQL添加唯一索引避免重复

作者: 唐T唐X | 来源:发表于2018-10-11 14:59 被阅读141次

在很多情况下,如果我们要往MySQL的表中添加数据,需要做判断是否有重复数据的操作。如果这次要添加的数据在之前就已经存在了,那这次就不会添加并告知调用方;如果不存在,那就添加。
今天要分享的就是利用MySQL添加唯一索引来实现上述功能。
首先,我们需要设置唯一索引:


image.png

如上表,我们需要给group_name这一列添加唯一索引,使之后再添加存在的group_name时会报重复信息。在这里我给大家展示如何使用Navicat来设置(网上大部分都是直接用命令,看大家习惯吧)


image.png
如上图,在Navicat的设计表中添加我们需要的索引即可,然后保存,唯一索引就建好了。
接下来就是验证唯一索引是否管用了,直接上代码:
Dao文件
    // 增加团队
    public int addGroup(Group group) {
        int resultID;
        try {
            resultID = jdbcTemplate.update("insert into interface_groups(group_name, creator, status, create_Time) values(?,?,?,?)",
                    group.getGroupName(), group.getGroupCreator(), group.getGroupStatus(), DateUtil.timeStamp2Date(DateUtil.timeStamp(),"yyyy-MM-dd HH:mm:ss"));

        } catch(DuplicateKeyException e){
            resultID = 2;
        } catch(Exception e){
            resultID = 0;
        }
        return resultID;
    }

Service文件

    @Autowired
    private GroupsDao groupsDao;

    public int addGroup(Group group) {
        return groupsDao.addGroup(group);
    }

Controller文件

    @PostMapping("/interface/group/{group_name}/{group_creator}")
    public String addGroup(@PathVariable(value = "group_name") String group_name,
                      @PathVariable(value = "group_creator") String group_creator){
        Group group = new Group(group_name, group_creator, 1);
        int resultID = groupsService.addGroup(group);
        JSONObject result = new JSONObject();

        switch(resultID){
            case 1:
                result.put("result", true);
                logger.info("Create group " + group_name + " from " + group_creator + " successfully!");
                break;
            case 2:
                result.put("result", false);
                result.put("reason", "插入团队重复!");
                logger.info("Create group " + group_name + " from " + group_creator + " fail!");
                break;
            default:
                result.put("result", false);
                result.put("reason", "插入团队失败!");
                logger.info("Create group " + group_name + " from " + group_creator + " fail!");
                break;
        }
        return result.toJSONString();
    }

上述代码大家只关心dao文件和controller文件即可,从controller请求结果就能验证唯一索引是否管用。我们用Postman请求下:
第一次请求:


image.png

第二次请求:


image.png
完美!

相关文章

  • MySQL添加唯一索引避免重复

    在很多情况下,如果我们要往MySQL的表中添加数据,需要做判断是否有重复数据的操作。如果这次要添加的数据在之前就已...

  • 索引(四)使用MySQL唯一索引避免重复

    摘要:这篇文章中,我们会一起聊下如何使用MySQL 索引防止一个表中的一列或者多列产生重复值 一:介绍MYSQL唯...

  • 数据库索引

    mysql索引 索引类型 normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保...

  • MySql 添加或更新数据(如果数据符合某条件,则更新数据)

    1、设置主键或唯一索引,但主键或唯一索引重复时,就更新数据 2、批量插入,同时避免重复插入 3、当满足多个字段同时...

  • mysql添加唯一索引

    alte table user_level_current add unique UQE_USER (user_i...

  • mysql唯一索引 覆盖索引

    当mysql唯一索引是组合索引时,如果查询条件满足组合索引的覆盖条件,同样将是覆盖索引。 测试:新建表t: 添加唯...

  • mysql优化(第十四天)

    MySQL如何优化 表的设计合理化(符合3NF); 添加适当索引(index) [四种: 普通索引、主键索引、唯一...

  • mysql 添加和删除唯一索引、主键

    mysql 添加和删除唯一索引、主键 参考链接 https://www.cnblogs.com/mafeng/p/...

  • MySQL数据库优化

    一、MySQL如何优化1、表的设计合理化(符合3F)2、添加索引(普通索引、主键索引、唯一索引、全文索引)3、SQ...

  • MySQL索引简介

    索引的分类 1. 普通索引和唯一索引 普通索引是mysql 中的基本索引类型,允许在自定义索引的列中插入重复值和空...

网友评论

    本文标题:MySQL添加唯一索引避免重复

    本文链接:https://www.haomeiwen.com/subject/ldyiiftx.html