建唯一索引保证并发时,多线程插入数据的业务上的一致性

在项目中遇到并发导入excel数据到同一张表, 
最初没有设置unique索引,导致在多线程并发导入excel数据的时候,业务上要求供应商代码不重复的字段,出现了重复,在这张数据表维护的时候,只有逻辑删除,不会物理删除,因此最开始没有去创建供应商代码的unique索引.

单纯的对供应商代码做unique索引也是不能满足要求的

因为失效删除的数据是打了标记的,有效的相同供应商代码还是可以插入进来.

后来想到了加上一个删除时间Delete——time 
默认值为0 
删除时把当前的系统时间毫秒存到这个字段,有效的数据Delete_time就为0

在删除并发时候,毫秒数一样会提示用户稍后删除. 
这样就实现了多线程插入数据保证一致性的问题

然后联合业务需求不能重复的字段建立联合索引 
如下图:

这里就是建立的唯一索引

转载于:https://blog.csdn.net/a417074865/article/details/50609025 

猜你喜欢

转载自blog.csdn.net/yinni11/article/details/81174166