Получить правильный последний идентификатор из таблицы

Как я могу сделать SQL-запрос в PDO, чтобы узнать следующий идентификатор? Я проверил $sql->lastInsertId() а также SELECT LAST_INSERT_ID() FROM my_table но в соответствии с этим последний идентификатор равен 116, когда последний идентификатор равен 66 в моей таблице.

Заранее спасибо!

4 ответа

Решение

Было бы select max(lastID) from my_table Работа? (Предполагается, что имя столбца, содержащего последний созданный идентификатор, называется lastID)

LAST_INSERT_ID() возвращает последний идентификатор, который был вставлен с автоинкрементацией. Фактически с тех пор записи могут быть удалены (может быть, все они из 67-116), но это не меняет позицию автоинкремента, и следующий идентификатор будет 117.

Если вы хотите узнать, какой самый большой идентификатор в вашей таблице, то SELECT max(id) FROM table могу помочь тебе.

Я надеюсь убедить вас передумать

  • Не нужно знать следующий идентификатор
  • нет способа узнать, что будет дальше.

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

Вот почему ваша база данных составляет 116, а не 66.
Вот почему вы должны довольствоваться 116, не заставляя его быть 66

Не говоря уже о том, что оба lastInsertId() а также SELECT LAST_INSERT_ID() гарантированно будет правильным значением, в то время как принят принятый ответ, который предлагает использовать max(lastID) не является.

Если у вас есть автоинкремент в столбце идентификатора, следующий идентификатор не всегда last item's ID + 1, Поэтому, если вы вставите два элемента (идентификаторы 1 и 2), удалите второй и снова вставите новый, его идентификатор будет 3, а не 2, но это также зависит от вашего механизма БД.

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

Другие вопросы по тегам