客户端短时间内对接口两次请求,造成了垃圾数据,求解救方法,或思路。

java后台的业务逻辑,是每次接口请求进来,查看一下数据库中有没有这条数据,如果没有就创建,如果有就update一下就行了,但是在实际操作中,客户端由于断网或者网络不稳,造成了这个数据请求接口在短时间内同时进来了两次,或者多次。 由于第一次请求之后数据还没有创建,第二次 的请求在业务逻辑中没有查到数据 ,也同时进行了创建,导致数据产生多余。

这样的情况,用什么思路来解决呢?项目中没有用缓存,用线程也不能保证数据不能重复。 但是项目这条业务的最终目的是保证数据的准确性,不能出现多余。 请大神指导 啊。

先找到你数据中不能重复的字段,然后把它在数据库中设置为unique索引,这样第二次创建就不能创建重复的

还可以:当第一次请求来了以后就加一个锁等。第二次查询要等第一次创建完了才能开始。

我的话一般是在数据库里面做了primary key或者unique key进行约束,这样子就不会出现问题了

用事务提交,进事务时先锁表,这样多个请求就会同步等待