如何在不使用mysql中唯一键的情况下避免重复操作

时间:2019-03-18 06:11:27

标签: java mysql hibernate

这是一个用例,其中唯一键约束可能因帐户而异。因此,复制限制不能使用主键/唯一键约束来实现。

假设我们有带有列C1,C2,C3,C4,C5的表T1,并且我们有两个帐户A1和A2。 A1和A2的数据进入同一表T1。但是要获得帐户A1的唯一记录,我们考虑C1和C2列,对于帐户A2,我们考虑C3和C3。同样,我们可以有很多帐户,每个帐户都有不同的列集来标识唯一记录。

因此,我们进行了Java代码检查。但是,如果有2个重复的并发请求,则2个Java线程会看到该成员不存在,并且它们都插入了导致重复的记录。如何防止重复插入?

我可以通过使用行级锁或Hibernate的乐观并发来阻止更新。我可以想到使用表级锁来防止此类插入,但是由于它还会阻止更新,因此限制了应用程序性能。

1 个答案:

答案 0 :(得分:-2)

将关键主键替换为唯一键