【发布时间】:2013-04-24 05:30:33
【问题描述】:
我使用 @Column(unique=true) 为用户名设置唯一约束
在将数据插入数据库之前检查重复值的最佳做法是什么?
- 通过捕获在您尝试插入具有相同用户名的数据时程序抛出的异常。
- 在尝试插入之前检查数据库是否提供的用户名已经存在。
【问题讨论】:
-
这种情况会经常发生吗?或者只是非常罕见(即使只是在出现错误的情况下)?
-
@ling.s 如果多个客户端尝试插入可能会失败
-
@ling.s:但是,考虑到并发数据库更新,第二个选项可能不会 100% 安全。
-
@MarounMaroun 我认为在这种情况下捕获唯一索引违规异常是合理的。无论如何你都需要抓住它,因为方法 2 不是原子的,因此从多个客户端完成时不安全。