我有这张表:
User
id INT PK
login VARCHAR UNIQUE
我想知道处理 UNIQUE 索引插入的最佳方式(例如:新用户创建)
1) 我可以简单地插入,当“出现重复条目”时,我捕获异常并在应用程序中处理它
=> 我不确定这是最好的解决方案
2) 我可以 SELECT ... WHERE login = ... 然后在没有找到记录时插入,或者如果选择找到某些东西则显示错误
=> 这不是原子的,插入可以发生在 SELECT 和 INSERT 之间
3) 我可以启动一个事务,SELECT FOR UPDATE,INSERT 然后在没有找到记录时 COMMIT 或 ROLLBACK 并在用户已经存在时显示错误
=> 这根本行不通,因为 MySQL 不会锁定任何现有行...所以它肯定会导致死锁
那么处理这个非常简单的研究案例的最佳方法是什么?
最佳答案
关于mysql - 使用具有良好原子性的 MySQL 唯一索引而不会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9892083/