2013-02-15 8 views
0

Используя PHP и MySQL, я хочу получить номер будущего идентификатора в MySQL, число, которое будет после, как nextincrement. Как я могу это сделать?Следующий id, будущий Id,

+0

Вы никогда не сможете получить следующий идентификатор. Когда-либо. Просто возьмите его оттуда и закодируйте свое приложение, не думая о следующем ID. –

+0

Вы можете использовать 'SHOW TABLE STATUS WHERE name = 'my_table'', но это дает вам ** никакой гарантии **, что следующее значение автоинкремента будет тем, которое вы получите. – cmbuckley

ответ

0

Если вы просто вставить что-то в базу данных, вы можете использовать mysqli_insert_id()

Оттуда, просто добавьте, чтобы получить следующий.

http://php.net/manual/en/function.mysql-insert-id.php

+1

Неверно, вы не можете добавить 1, чтобы получить следующий. –

1

Это на самом деле не возможно сделать надежно. Вы можете сделать select max(id)+1, но это произойдет, если у вас есть откатные транзакции и/или параллельные процессы.

Лучший метод:

  1. запускает транзакцию.
  2. Вставьте скелет запись и сделать select last_insert_id(), чтобы получить его ID
  3. Используйте этот идентификатор для любого ребенка/параллельные обновления записей
  4. занесения записи скелета с чем-нибудь еще вам нужно
  5. Подтверждать транзакцию.

Если какой-либо этап не выполнен, откатите транзакцию и выбросьте этот идентификатор, потому что он недействителен и больше никогда не будет использоваться.

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