powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как получить следующее значение авто_инкремента
9 сообщений из 34, страница 2 из 2
Как получить следующее значение авто_инкремента
    #32909144
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гг никому не втыкать ибо чушь :)
заметил в мануале что last_insert_id может возвращать не только последнее вставленное значение но и принудительное...
insert into talbe set id=null;
select last_insert_id((select max(id) from table));

--
No microsoft software was used to post this message
...
Рейтинг: 0 / 0
Как получить следующее значение авто_инкремента
    #32909349
alexpogorelov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эх не читали мануал, а хамите не вижу там противоречия
на книжку вы зря наговариваете рецензент Видениус
а насчет ласт инсерт еще раз говорю хотя значение хранится на сервере в отличие от майинсерт но хранится только для текущей его сессии
таким образом получение макс id не гарантируется если только ваш сервер никогда не гасится но это сомнительно...
...
Рейтинг: 0 / 0
Как получить следующее значение авто_инкремента
    #32909515
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин, забудьте вы за MAX. Забудьте, что автоинкремент генерирует числа... С таким же успехом он мог генерировать японские иероглифы... Есть просто байты информации, которые гарантируют однозначную идентификацию всей строки. ХРЕН правильно все сказал, что если клиент - говно, то убдет автоинкремент 0. А если чел не может понять, что ВСЕ РАБОТАЕТ, а пытается начать гланды через зад доставать, считая, что это не совсем удобно, но работает. То пусть так и поступает, пока не выучится. Потом все нормально переделает. все что ему нужно знать - ему сказали. причем, неоднократно.
Об этом я твержу целый тред...
sky2k, от тебя не ожидал, хоть бы ты подумал, какой к черту Max+1???
...
Рейтинг: 0 / 0
Как получить следующее значение авто_инкремента
    #32909774
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2alexpogorelov
>>last_insert_id() такая конструкция может возвращать 0 цитирую книгу "возвращает значение функции auto_increment, которое было сгенерировано последним во время текущего сеанса работы сервера " т.е. если с момента вставки вы гасили сервер то будет 0
>> а хамите не вижу там противоречия
Насколько я понимаю Видениус писать на русском книгу не мог и это перевод и скорее всего там должно было быть "в текущем сеансе работы с сервером"
Для проверки можете открыть два клиента, вставить в одном строку и выполнить в обоих
select last_insert_id()
получите в одном случае N во втором 0

и вообще не понимаю как связан результат last_insert_id() с перезагрузкой сервера??, в доке же явно написано от чего зависит...
>>таким образом получение макс id не гарантируется если только ваш сервер никогда не гасится но это сомнительно...
для myisam таблиц счётчик инкремента хранится в файле таблиц
а вот для innodb таблиц счётчики инкремента выставляются в момента запуска как MAX(id)

2 4m@t!c
>>sky2k, от тебя не ожидал, хоть бы ты подумал, какой к черту Max+1???
Можно поподробнее к чему придрались?

--
No microsoft software was used to post this message
...
Рейтинг: 0 / 0
Как получить следующее значение авто_инкремента
    #32909870
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sky2k
2 4m@t!c
>>sky2k, от тебя не ожидал, хоть бы ты подумал, какой к черту Max+1???
Можно поподробнее к чему придрались?

я уже писал, что МАХ - не решение проблемы
представь вариант, когда тип данных у тебя TINYINT (т.е. максимальное беззнаковое 255). В процессе работы с таблицей - строки добавлялись/удалялись, Значение атрибута автоинкремент стало равно 255. А теперь вопрос: чему будет равно значение автоинкремента при добавлении новой строки????
...
Рейтинг: 0 / 0
Как получить следующее значение авто_инкремента
    #32909896
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 4m@t!c
привожу пример для любителей tinyint :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
[sky@sky ~]$ mysql -u root test
  [rubbish text censored]

mysql> truncate aaa;
Query OK,  0  rows affected ( 0 . 06  sec)

mysql> insert into aaa set id= 255 ;
Query OK,  1  row affected ( 0 . 00  sec)

mysql> insert into aaa set id= 0 ;
ERROR  1062  ( 23000 ): Duplicate entry '255' for key  1 

mysql> insert into aaa set id= 256 ;
ERROR  1062  ( 23000 ): Duplicate entry '255' for key  1 
mysql>  quit
Bye

--
No microsoft software was used to post this message
...
Рейтинг: 0 / 0
Как получить следующее значение авто_инкремента
    #32910031
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты самого главного не написал, что выдаст тебе
Код: plaintext
select last_insert_id((select max(id) from table))
Он выдаст тебе 255, хотя был еррор, и не было никакого инсерта....
А если ты будешь делать все без MAX, а через select las_insert_id(), то тебе вернется 0, т.е. ты будешь знать, что не было никакого инсерта.
...
Рейтинг: 0 / 0
Как получить следующее значение авто_инкремента
    #32910094
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я ж и написал что чушь )
А вообще подразумевалать проверка ошибок после каждого запроса
Поэтому выполнение оборвётся на первом.... и нету смысла получать ID
просто я хотел показать что например select last_insert_id(3) будет 3

--
No microsoft software was used to post this message
...
Рейтинг: 0 / 0
Как получить следующее значение авто_инкремента
    #32911149
Фотография Игорь Л.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sky2k
Его можно получить по запросу для таюблиц myiasm
show table status like 'table'
Но так и не пойму зачем...
Спасибо! Это как раз то, что нужно!
А нужно это для того, чтобы сначала сделать запись, а затем внести данные с формы. Дело в том, что все переговоры операторов записываются на диск в WAV-файл и, соответственно, сразу же нужно записать наименование файла. Если запись с формы не произведена, то "пустая" запись укажет на "левый" разговор оператора...
Вот тут и нужен идентификатор введеной записи...
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как получить следующее значение авто_инкремента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]