У меня есть эта таблица:
User
id INT PK
login VARCHAR UNIQUE
Я хочу знать, как лучше всего обрабатывать вставку уникальных индексов (например, создание нового пользователя)
1) Я могу просто ВСТАВИТЬ, и когда возникает «повторяющаяся запись», я ловлю исключение и обрабатываю его в приложении
=> Я не уверен, что это лучшее решение для этого
2) Я могу выбрать SELECT ... WHERE login = ... затем INSERT, если запись не найдена, или отобразить ошибку, если select что-то нашел
=> Это не атомарно, вставка может происходить между SELECT и INSERT
3) Я могу начать транзакцию, ВЫБЕРИТЕ ДЛЯ ОБНОВЛЕНИЯ, ВСТАВИТЬ, затем УСТАВИТЬ, когда записи не найдены, или ОТКРЫТЬ, и отобразить ошибку, если пользователь уже существует
=> Это просто не будет работать, так как MySQL не блокирует никакие существующие строки ... Так что это, безусловно, приведет к тупику
Так, как лучше всего справиться с этим очень простым примером?