|
|
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
гг никому не втыкать ибо чушь :) заметил в мануале что 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 23:05 |
|
||
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
эх не читали мануал, а хамите не вижу там противоречия на книжку вы зря наговариваете рецензент Видениус а насчет ласт инсерт еще раз говорю хотя значение хранится на сервере в отличие от майинсерт но хранится только для текущей его сессии таким образом получение макс id не гарантируется если только ваш сервер никогда не гасится но это сомнительно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 08:57 |
|
||
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
Млин, забудьте вы за MAX. Забудьте, что автоинкремент генерирует числа... С таким же успехом он мог генерировать японские иероглифы... Есть просто байты информации, которые гарантируют однозначную идентификацию всей строки. ХРЕН правильно все сказал, что если клиент - говно, то убдет автоинкремент 0. А если чел не может понять, что ВСЕ РАБОТАЕТ, а пытается начать гланды через зад доставать, считая, что это не совсем удобно, но работает. То пусть так и поступает, пока не выучится. Потом все нормально переделает. все что ему нужно знать - ему сказали. причем, неоднократно. Об этом я твержу целый тред... sky2k, от тебя не ожидал, хоть бы ты подумал, какой к черту Max+1??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 10:22 |
|
||
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 11:41 |
|
||
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
sky2k 2 4m@t!c >>sky2k, от тебя не ожидал, хоть бы ты подумал, какой к черту Max+1??? Можно поподробнее к чему придрались? я уже писал, что МАХ - не решение проблемы представь вариант, когда тип данных у тебя TINYINT (т.е. максимальное беззнаковое 255). В процессе работы с таблицей - строки добавлялись/удалялись, Значение атрибута автоинкремент стало равно 255. А теперь вопрос: чему будет равно значение автоинкремента при добавлении новой строки???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 12:09 |
|
||
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
2 4m@t!c привожу пример для любителей tinyint :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. -- No microsoft software was used to post this message ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 12:18 |
|
||
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
Ты самого главного не написал, что выдаст тебе Код: plaintext А если ты будешь делать все без MAX, а через select las_insert_id(), то тебе вернется 0, т.е. ты будешь знать, что не было никакого инсерта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 13:06 |
|
||
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
я ж и написал что чушь ) А вообще подразумевалать проверка ошибок после каждого запроса Поэтому выполнение оборвётся на первом.... и нету смысла получать ID просто я хотел показать что например select last_insert_id(3) будет 3 -- No microsoft software was used to post this message ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 13:29 |
|
||
|
Как получить следующее значение авто_инкремента
|
|||
|---|---|---|---|
|
#18+
sky2k Его можно получить по запросу для таюблиц myiasm show table status like 'table' Но так и не пойму зачем... Спасибо! Это как раз то, что нужно! А нужно это для того, чтобы сначала сделать запись, а затем внести данные с формы. Дело в том, что все переговоры операторов записываются на диск в WAV-файл и, соответственно, сразу же нужно записать наименование файла. Если запись с формы не произведена, то "пустая" запись укажет на "левый" разговор оператора... Вот тут и нужен идентификатор введеной записи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2005, 22:15 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32909870&tid=1854350]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 520ms |

| 0 / 0 |
