Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Как угадать следующий AUTO INCREMENT (ID)?

#алгоритм #php #mysql


Перед тем как добавить в базу, нужно узнать следующий ID который AUTOINCREMENT.

Сделал так:

SELECT MAX(id) as maxid FROM tab0

$my_new_id = $db['maxid'] + 1;


Строки удалять не собираюсь DELETE, удаляю только UPDATE колонку show перевожу из
true в false. Читал, что так делать нельзя ни в коем случае. Но не могу придумать другой
реализации, а перерабатывать структуру не хотелось бы.


Какие подводные камни этой реализации, если не использовать DELETE?
В каких ещё моментах может "сбойнуть"?

    


Ответы

Ответ 1



LAST_INSERT_ID() // получишь последний ID last_insert_id()

Ответ 2



Проблемы вашего решения: Не безопасно, из-за многопоточности Возможно - отосительно долго выполняется ID который будет присвоен при следующем (в любой из сессий) INSERT: SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'table_name' AND table_schema = DATABASE(); Не безопасно, т.к. может очень быстро измениться last_insert_id() - вернёт id установленный в последнем insert'е вашей сессии.

Комментариев нет:

Отправить комментарий