Следующее число счётчика

NaZg

Новичок
Следующее число счётчика

Имеем таблицу в ней идёт поле id, со свойством auto_increment
есть форма на php для внесения в вышеупомянутую таблицу данных

как мне вывести следующее значение поля id ?
 
matross
читаем пост tony2001 и вообще - по какому принципу работает auto_increment
 

white phoenix

Новичок
matross
auto_increment добавляет единицу не к максимальному на данный момент значению поля, а к счетчику прикрепленному к полю. Можно заполнить 10 рядов (INSERT), затем удалить их, и сделать INSERT, поле будет равно 11.
 

.des.

Поставил пиво кому надо ;-)
matross никаких гарантий что за это время в таблицу не будет выполенен INSERT. Даже наоборот в большинстве случаев именно таки и будет и попытка вставки с ключом равным mysql_insert_id()+1 вернет duplicate error.
Все это есть если внимательно просмотреть топики по ссылке приведенной tony2001 поэтому вместо гадания лучше читайте.

-~{}~ 23.12.05 02:35:

Автор оригинала: betik
А mysql_insert_id() разве не вернёт "11"?
именно, только при попытке вставки mysql_insert_id() +1, то есть 12 будет сюрприз %)
 

betik

Новичок
Автор оригинала: .des.
matross никаких гарантий что за это время в таблицу не будет выполенен INSERT. Даже наоборот в большинстве случаев именно таки и будет и попытка вставки с ключом равным mysql_insert_id()+1 вернет duplicate error.
Все это есть если внимательно просмотреть топики по ссылке приведенной tony2001 поэтому вместо гадания лучше читайте.

-~{}~ 23.12.05 02:35:


именно, только при попытке вставки mysql_insert_id() +1, то есть 12 будет сюрприз %)
Автор оригинала: NaZg
как мне вывести следующее значение поля id ?
ИМХО при постановке задачи как у тред стартера Mysql_insert_id()++ самое то. Вывести требуется не минимально е доступное значение автоинкриментного поля на текущий момент времени, а СЛЕДУЩЕЕ за вставленным (insert), вне зависимости от того было ли оно уже вставлено или нет. Единственным косым моментом мне кажется отработка insert+delete...
 

.des.

Поставил пиво кому надо ;-)
betik тредстартеры в этом форуме в большинстве случаев не знают чего хотят. Поэтому давать им потенциально опасные советы очень не рекомендуется. Такого наворотят %)
 

NaZg

Новичок
.des.
мне надо вывести то, число, которое будет добавлено в автоинкрементирующийся столбец
 

.des.

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

betik

Новичок
Видимо алгоритм таков:
Блокировка на запись в таблицу средствами скрипта, например передача ключа разблокировки.
select LAST_INSERT_ID() from table;
Вывод полученной переменной +1;
Запись в таблицу.
Разблокировка.

При этом все скрипты которые не знают о алгоритме и правилах блокировки - помешают работе знающих.


/*
You can find the value used for an AUTO_INCREMENT column by using the LAST_INSERT_ID() function.
*/
 
Сверху