Можно ли как-то определить следующий AUTO_INCREMENT KEY?

Элина

Новичок
Можно ли как-то определить следующий AUTO_INCREMENT KEY?

Здравтсвуйте! У меня такая проблема - в таблице есть первичный ключ = ID int, он автоинкрементный.

Вопрос - можно ли узнать как-то номер (ID) записи, которая будет занесена следующим инсертом?

Надо знать именно тот, который БУДЕТ занесен в таблицу, вариант с last_insert_id() не подходит, "SELECT count(ID) FROM TBL_NAME" тоже не подходит, т.к. возможно удаление записей из таблицы, а тогда номер ID следующей записи не будет совпадать с count(ID).
 

alpine

Новичок
Элина
1) Вставлять запись инсертом получать ее id командой last_insert_id() а потом делать Update вставленной например пустой записи.

2) Эмулировать работу с последовательностями. Завести отдельную таблицу для хранения последовательности с одним автоинкрементным полем id и написать функции для работы с ней. Подробнее можно посмотреть реализацию в PEAR::DB для драйвера mySQL.
 

Popoff

popoff.donetsk.ua
alpine
Слово "пытаться" - почти всегда означает "я пытаюсь это сделать вместо того, чтобы сделать". Поэтому - не будут :)
 

Lord Max

Guest
если ключ автоинкрементируемый, почему нельзя last_insert_id()+1 ??? ну то есть следующий )
 

Steamroller

Новичок
если ключ автоинкрементируемый, почему нельзя last_insert_id()+1 ??? ну то есть следующий )
Потому что last_insert_id может быть не определено в тот момент, когда нужно получить значение.
 

chira

Новичок
Lord Max

к твоим ответам нужно добавлять знак вопроса, не вводи людей в заблуждение ...

Элина

думаю в твоей власти поменять алгоритм так, что бы использовать last_insert_id() или mysql_insert_id()
сделай как говорит alpine и потом будешь с благодарностью вспоминать этот форум, избавивший тебя от граблей
 

alexhemp

Новичок
Lord Max

Ты не въехал в вопрос. Узнать какое значение будет следующим - нельзя. Можно только с некой долей вероятности предположить что это будет MAX(id) + 1

Соотв. вероятность ошибки будет тем больше, чем интенсивнее вставки.

Самое интересное, что до вставки записи узнавать ее ID НЕ НУЖНО И ВРЕДНО.
 
Сверху