Как я могу убедиться, что lastInsertId() PDO не совпадает с другой одновременной вставкой?
Я делаю регистрационную форму с INSERT
SQL-запрос с использованием PDO. После этой вставки я хочу извлечь userid
(автоинкремент, первичный ключ), который был только что создан, и INSERT
это в другую таблицу (таблица "код подтверждения")
Но как я могу убедиться, что этот ИД пользователя не принадлежит второму пользователю, который зарегистрировался на 1/1000 секунды позже, чем первый пользователь?
Должен ли я найти способ блокировки стола? Должен ли я использовать транзакции?
2 ответа
lastInsertId()
возвращает идентификатор последней строки, вставленной в это соединение, поэтому параллельные пользователи (с разными подключениями к базе данных) не будут вмешиваться.
Вы можете избежать этого, выполнив выборку по электронной почте или по уникальному полю. Это гарантирует, что вы получите правильный идентификатор пользователя.
Например:
select id from user_table where email = 'user@email.com' limit 1;