Помощник
|
Как узнать какой айди я только что добавил в базу? |
CandyDandy
|
Сообщение
#1
|
||
|
|
||
|
|||
alexdrob |
23.2.2011, 15:44;
Ответить: alexdrob
Сообщение
#2
|
|
|
|
|
CandyDandy
|
Сообщение
#3
|
|
Вот чем мне нравится php так это тем что в нём есть всё что мне нужно (:
|
|
|
Mulder_hb |
23.2.2011, 19:22;
Ответить: Mulder_hb
Сообщение
#4
|
|
Фишка может не прокатить на высоконагруженном сайте, когда между запросом на вставку и пхп-функцией mysql_insert_id пройдет некоторое время. Самым надежным вариантом будет сделать после вставки операцию извлечения
SELECT `id` FROM `table` WHERE ...
|
|
|
alexdrob |
23.2.2011, 19:42;
Ответить: alexdrob
Сообщение
#5
|
|
Самым надежным вариантом будет сделать после вставки операцию извлечения А если использовать http://www.mysql.ru/docs/man/LOCK_TABLES.html ? |
|
|
DoctorX |
23.2.2011, 22:10;
Ответить: DoctorX
Сообщение
#6
|
|
Насколько мне известно mysql_insert_id возвращает id для текущей сессии к mysql (если указать аргумент) Так что тут нагрузка не влияет. Или я не прав?
-------------------- |
|
|
alexdrob |
23.2.2011, 22:25;
Ответить: alexdrob
Сообщение
#7
|
|
Наверное прав, так как там есть параметр ид соединения, а значит применяется к текущему соединению.
http://dev.mysql.com/doc/refman/5.0/en/get...-unique-id.html Тут кстати написанно что изменения автоинкрементного поля другими соединениями не как не влияют на LAST_INSERT_ID() вот отсюда и привязка к соединению. |
|
|
Mulder_hb |
24.2.2011, 12:04;
Ответить: Mulder_hb
Сообщение
#8
|
|
А если использовать http://www.mysql.ru/docs/man/LOCK_TABLES.html ? Насколько я помню, блокировка таблицы не работает на движке myisam. Да и не знаю, как на остальных кроме, innodb. Поэтому решение не идеальное. Можно конечно, писать костыль, который сможет заблокировать и остальные движки. Хотя с другой стороны, на высоконагруженный сайтах и myisam нет смысла применять. Насколько мне известно mysql_insert_id возвращает id для текущей сессии к mysql (если указать аргумент) Так что тут нагрузка не влияет. Или я не прав? Из мануала: Because mysql_insert_id() acts on the last performed query, be sure to call mysql_insert_id() immediately after the query that generates the value. Пхпшная функция mysql_insert_id() и мускульная функция LAST_INSERT_ID() это разные вещи. У мускула вроде возвращает для текущей сессии, у пхп всегда последний вообще. |
|
|
Apay |
24.2.2011, 12:35;
Ответить: Apay
Сообщение
#9
|
|
|
|
|
Mulder_hb |
24.2.2011, 17:49;
Ответить: Mulder_hb
Сообщение
#10
|
|
именно для этого есть параметр На простеньких сайтах даже и параметр передавать не нужно. Все прекрасно и без него работает. Параметр служит лишь для разграничения нескольких соединений внутри текущей сессии. Он не разграничивает сессии в параллельных процессах. Вероятность получить тот же идентификатор очень мала, но на высоконагруженных сайтах вполне реальна. Поэтому и используются такие понятия, как блокировка таблиц, блокировка файлов. Читайте внимательнее мануал. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Как в пушсетках покупают по 100-200 тысяч кликов за день? | 2 | Boymaster | 701 | Вчера, 17:52 автор: Boymaster |
|
Как вы отдыхаете от работы за компом | 151 | adw-kupon.ru | 19866 | 23.4.2024, 13:52 автор: Vmir |
|
Какой % отказов нормален для сайта? | 14 | Aloof | 3384 | 23.4.2024, 13:50 автор: Vmir |
|
Как вы бросили работу и перешли на заработок с сайтов? | 20 | uahomka | 3478 | 23.4.2024, 11:54 автор: Skyworker |
|
Во что Вы играете? | 400 | Vmir | 67988 | 20.4.2024, 18:39 автор: SaintExchange |
Текстовая версия | Сейчас: 25.4.2024, 16:46 |