gpt4 book ai didi

java - 在 Oracle 中不使用唯一键防止重复插入

转载 作者:行者123 更新时间:2023-11-29 03:52:33 25 4
gpt4 key购买 nike

这是通过网络应用程序/网络服务注册成员(member)的用例。我们有一个复杂的算法来检查成员是否重复,通过查看多个表格,如电话、地址等。算法因成员所在国家/地区而异。所以这个限制不能使用主键/唯一键约束来实现。

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

我可以通过使用行级锁或 Hibernate 的乐观并发来阻止更新。我可以想到表级锁​​来防止此类插入,但会限制应用程序性能,因为它还会阻止更新。我认为的另一种选择是使用 id='memberInsert' 的记录创建一个锁表,并通过 JDBC 强制所有插入以获得对该记录的行级锁。

谢谢苏内尔

最佳答案

如果它要在任何地方,我希望它在写触发器中,而不是在 Java 代码中。某些其他应用程序或应用程序的某些其他区域可能会做一些不好的事情。

在数据库上卸载它有两个好处。 1) 它可以防止您在上面提到的竞争条件,并且 2) 它通过不允许某些错误的应用程序修改记录使它们处于非法状态来保护数据的完整性。

关于java - 在 Oracle 中不使用唯一键防止重复插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com