欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 先查询再插入

程序员文章站 2022-05-23 10:05:48
...

在测试代码时发现一个问题:
要实现一个数据库表中user_id和手机号两个字段觉得数据的唯一性,所以我要先进行查询,如果数据存在,则不插入,数据不存在则插入数据。可是当前台打开多个页面时,同时触发这个操作之后,第一个访问来了判断没有数据便进行插入,但还没有插入完成时第二个访问也来了,此时查询还没有数据,便也插入,但这样一来就有两条重复数据了。
所以要需要控制一下这样的问题我找到一些方法:
1、 可以用sql语句进行控制,有插入的不允许有重复的值插入:

  INSERT INTO marketing_vote (user_id, mobile_number, type) 
  SELECT '18210141111my', '18210141111', 'vote' FROM  DUAL  WHERE 
NOT EXISTS ( 
SELECT 
*
FROM 
marketing_vote 
WHERE 
mobile_number = '18210141111my' and user_id='18210141111');

这样在插入的时候可以先时行判断,如果条件里的用户存在数据库表中,那么not exists里返加false,则条件不存在不会插入数据,反则会将数据插入到数据库表中。

2、 可以在表中利用唯一索引进行控制,这样不就可以插 入重复数据;
3、. 还可以在插入之前做一个删除操作,当然这种方法不是特别合理;