MYSQL插入数据时检查字段值是否重复的方法详解

 更新时间:2022年01月07日 16:45:27   作者:长安不野  
这篇文章主要给大家介绍了关于MYSQL插入数据时检查字段值是否重复的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

项目需求

现有一张u_ps的车位信息表,对应每个小区的车位id ps_id自增长,每个车位又对应车位编号num,车位id由自增长,车位编号可以根据自己小区情况手动添加设置,但是不能重复,车位编号不能重复。这就需要在新增车位信息的时候代码检验新增的该num在u_ps表中是否存在,存在则抛出异常,不存在则做插入操作。

问题关键

不同的小区community_id中车位num可以重复,如果分开设计表设置唯一约束是可行的,但是我们的需求是将所有的小区车位信息放在同一个表中,这就涉及到在插入一条数据的时候需要判断是否是同一小区id,在community_id相同的情况下num不能重复。

1、表分开时,对字段设置约束

我们的主键为车位id ps_id,我们的思路是当插入一条数据,先查询车位信息表,遍历新的数据中的num是否存在,或者说新增的num在表中是否为空,是则抛出异常,否则执行插入操作。 这是代码逻辑。

在sql中最直接的方法就是设置唯一索引(这跟主键并不冲突)

选中num

选中num

点击索引

这样就将num字段设置为唯一索引

在项目xml文件中设置插入语句

insert ignore into 语句是针对喊主键(唯一索引)字段的情况下做判断是否有重复的字段值,如果有则忽略本次操作抛出异常(try{}catch(){}),没有则执行插入操作。

2、所有操作在同一张表中

我们在不修改sql的情况下利用代码逻辑来实现

sql语句是最基本的插入语句:

代码逻辑:

解析代码:

new一个新的Ps(车位信息类)bean对象,将我们插入的数据中的community_id和num放进listps对象中,对listps 执行sqlSession查询操作并放进list集合中,再对该查询结果集中的两个字段进行判空,如果为空说明该表中没有该字段的值,则进行插入操作,如果不为空则抛出异常并且在catch中再次抛出异常ServiceException e,这里设置两次catch,ServiceException e是为了返回给前端我们车位编号重复的异常,如果不设置的话前端只会收到异常信息。

StringUtilMycc为我们设置的工具类,该类下的isEmpty方法为判空操作。

注意:判空时还需要保证传递的该字段的值不能为空,如果只判断表中数据是否为空的话最后的测试结果指挥报空指针!!!

这是我的工具类下的isEmpty方法:


 

注:框架改动、配置问题等不同无法做到同步,仅作为一个思路参考

总结

到此这篇关于MYSQL插入数据时检查字段值是否重复的文章就介绍到这了,更多相关MYSQL插入检查字段值重复内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql数据库脚本如何为表添加字段并设置备注

    mysql数据库脚本如何为表添加字段并设置备注

    这篇文章主要介绍了mysql数据库脚本如何为表添加字段并设置备注方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • MYSQL 的10大经典优化案例场景实战

    MYSQL 的10大经典优化案例场景实战

    在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的SQL就是整个系统性能的瓶颈。本文我们就聊聊MYSQL的优化
    2021-09-09
  • 基于Mysql+JavaSwing的超市商品管理系统设计与实现

    基于Mysql+JavaSwing的超市商品管理系统设计与实现

    本项目是使用Java swing开发,可实现超市管理系统商品列表信息查询、添加商品信息和修改商品管理以及删除商品信息和安装商品信息查询等功能。界面设计和功能比较简单基础、适合作为Java课设设计以及学习技术使用,需要的朋友可以参考一下
    2021-09-09
  • MySQL隐式类型的转换陷阱和规则

    MySQL隐式类型的转换陷阱和规则

    这篇文章先是通过一个实例给大家讲述在MySQL隐式类型的转换时遇到的陷阱,而后给大家介绍了MySQL隐式类型的规则,对大家操作mysql隐式类型的时候具有一定的参考借鉴价值,下面来一起看看吧。
    2016-09-09
  • MySQL中Nested-Loop Join算法小结

    MySQL中Nested-Loop Join算法小结

    数据库中JOIN操作的实现主要有三种:嵌套循环连接(Nested Loop Join),归并连接(Merge Join)和散列连接或者哈稀连接(Hash Join)。其中嵌套循环连接又视情况又有两种变形:块嵌套循环连接和索引嵌套循环连接。
    2015-12-12
  • MySQL处理大量DELETE操作的多种方法

    MySQL处理大量DELETE操作的多种方法

    本文将讨论 MySQL 中的大量 DELETE 操作,包括其潜在影响、最佳实践和性能优化策略,我们将通过 Java 代码示例展示如何高效地执行这些操作,并分析不同方法的优缺点,最后,提供相关的测试用例及结果预期,以帮助开发者更好地理解和应用这些技术,需要的朋友可以参考下
    2024-10-10
  • Mysql5.7.17 winx64.zip解压缩版安装配置图文教程

    Mysql5.7.17 winx64.zip解压缩版安装配置图文教程

    这篇文章主要介绍了Mysql5.7.17 winx64.zip解压缩版安装配置图文教程,需要的朋友可以参考下
    2018-03-03
  • 基于mysql 默认排序规则的坑

    基于mysql 默认排序规则的坑

    这篇文章主要介绍了解决mysql 默认排序规则的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看不看
    2021-02-02
  • 经典mysql连接查询例题

    经典mysql连接查询例题

    本文通过一个有趣的例子向我们介绍了mysql连接查询,采用了子查询和连接查询混合和多次连接查询,需要的朋友可以参考下
    2015-07-07
  • MySQL如何快速导入数据

    MySQL如何快速导入数据

    这篇文章主要介绍了MySQL如何快速导入数据,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08

最新评论