2010-06-08 5 views
0

У меня есть приложение и около 20 учетных записей создаются в минуту (в среднем). Мне нужно реализовать новую функцию, которая требует идентификатора последней вставки.Как получить идентификатор последней вставки

Я использую PDO.

Вопрос заключается, скажем, 5 пользователей создают учетные записи в одно и то же время. Будет ли он возвращать идентификатор из базы данных для только что созданного профиля пользователя или он вернет последнюю вставку?

Если вы понимаете, что я имею в виду.

+0

Не будет ли самая последняя вставка для пользователя, который был недавно создан? –

+0

Если вы используете MySQL, посмотрите на это: http://dev.mysql.com/doc/refman/5.0/ru/getting-unique-id.html –

+0

URL-адреса отформатированы следующим образом: site.com/3023/andy -mickell 3023 - это ключ A_I, а пользователь andy-mickell является пользователем. Это позволяет дублировать имена. Просто люди с одинаковым именем. Итак, когда профиль создан, я хочу перенаправить их на новый профиль. Для этого мне нужно знать первичный ключ этой записи. I.e создать запись, получить первичный ключ и переслать их в профиль. –

ответ

0

Предполагая MySQL (я не думаю, что у всех баз данных есть функциональность идентификатора последней вставки, такая как MySQL ...), каждый скрипт вернет идентификатор для элемента, который он только что ввел, все экземпляры работают независимо.

+0

Да MySQL. Как работает этот последний-insert-id? –

+0

Я использую 'lastInsertId()', никогда не было никаких проблем с ним. – jeroen

3

Будет ли он возвращать идентификатор из базы данных для этого профиля пользователей, который был только что создан, или он вернет последнюю вставку?

Он вернет последний идентификатор вставки текущего сеанса связи. Поэтому, даже если новая запись создается в другом экземпляре того же скрипта, последний идентификатор вставки будет тем, который вы хотите.

Пример (в виде псевдо-событий):

Создание нового пользователя // с идентификатором 5

сна в течение 10 секунд - пока другой скрипт вставляет 3 пользователей

Fetch последний вставить идентификатор - это будет 5

1

Вы должны взглянуть на PDO :: lastInsertID функции: http://de.php.net/manual/en/pdo.lastinsertid.php

+0

Я посмотрел на это, но у людей с этим связано много проблем. –

+0

Я использую MySQLi Class и его функцию insert_id (http://de.php.net/manual/en/pdo.lastinsertid.php), и у меня не было никаких проблем. Поскольку функция работает на одно соединение, которое вы делаете через php, он всегда возвращает правильный идентификатор для пользователя (пока вы выполняете его в том же скрипте). – 2ndkauboy

+0

Вы всегда можете запустить второй запрос, получая новый идентификатор, используя пользовательские данные в предложении WHERE, если вы не доверяете функции lastInsertId. – 2ndkauboy

Смежные вопросы