美文网首页
insert中加入where条件判断,解决插入重复数据的问题

insert中加入where条件判断,解决插入重复数据的问题

作者: 想象之中丶意料之外 | 来源:发表于2018-06-01 10:09 被阅读0次

对于会员注册,我们经常会做唯一性验证,通常情况下我们有这两种方式: 

1. 数据库表设计的时候loginName增加唯一约束 

2. 注册之前先查一下然后再去进行插入操作

针对以上两种情况,第一种情况,增加约束的话,是最有效的,但如果表结构已经确定了,再修改起来反而不太好,所以这里不多说。

我们这里就只说第二种情况,这种情况看似无懈可击,但是确实有致命的bug,如果两个人同时填好注册信息,数123一起点注册按钮,那么极有可能出现的情况就是两个人都能够注册成功,然后数据库就产生了两条数据。

虽然这种概率比较低,但用户数量上去了,这种情况也是有可能出现的。

下面用sql的方式处理这个问题:

insertintomember(id,loginName,password)selectnextval('S_T_MEMBER'),${loginName},${password}frommemberwherenotexists(selectidfrommemberwhereloginName = ${loginName});--上面的sql是配置在xml文件中的,相信玩过SSH或者SSI的同学们应该都能够领会其中的精神,不过这里还是解释下。--nextval('S_T_MEMBER'):下一个自增id--${loginName}:传入的参数--${password}:传入的参数--如果where条件不满足,那么insert就不会执行,返回的影响条数必然是0--如果where条件满足,那么就是说相同的loginName不存在,那么insert会执行select出来的结果集,而这个结果集肯定只有一条而且就是我们传进来的参数,返回的影响条数肯定是1

demo

至此问题解决了。

注:此文 转载自 https://blog.csdn.net/sun5769675/article/details/50158531

本人也亲试过。是可以的。而且可以根据自己需求,添加多个条件,来作为唯一性判断

相关文章

  • insert中加入where条件判断,解决插入重复数据的问题

    对于会员注册,我们经常会做唯一性验证,通常情况下我们有这两种方式: 1. 数据库表设计的时候loginName增加...

  • sql语句

    插入数据Insert into 表名 value(数据);删除表中数据Delete from 表名 where ...

  • MariaDB 防止数据重复插入

    在数据插入时,进行重复性判断,若不存在,则插入,若存在,则不插入,具体示例: sql示例: insert into...

  • 高并发下的mysql问题

    高并发下的mysql问题 mysql 重复插入问题 业务需要先根据where条件查询,如有数据命中对其进行修改否则...

  • SQL:insert加入Where条件

    很多业务,尤其多对多关联,插入中间关系表数据时,经常会出现重复插入的问题。常用的解决方案有: 插入前删除全部关联数...

  • mysql删除重复数据

    数据插入重复,想删除新插入的重复数据,保留原数据。 delete from bankaccounts where ...

  • Mysql——查询

    创建表 插入数据 where 条件判断符 查询价格小于10.2的水果 IN查询 查询指定范围内的条件记录,将所有的...

  • MySQL—增删改以及常用函数

    插入数据 INSERT 1. 插入字符和日期数据 字符和日期数据应该包含在单引号中 可能出现的问题 插入的数据中的...

  • 如果不存在则插入,存在则不插入

    MySQL INSERT插入条件判断:如果不存在则插入我们经常需要进行sql的批量插入,要求:该条记录不存在则插入...

  • Oracle数据库学习(四)

    一、DML(数据操作语言) 1、insert 作用:往表中插入数据 1、元组值的插入 语法:insert into...

网友评论

      本文标题:insert中加入where条件判断,解决插入重复数据的问题

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