powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как узнать и использовать id только что прошедшей операции?
8 сообщений из 8, страница 1 из 1
Как узнать и использовать id только что прошедшей операции?
    #38763573
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как узнать и использовать id только что прошедшей операции?
Делаю запись в таблицу, её назначается первичный ключ и мне нужно этот первичный ключ узнать.
...
Рейтинг: 0 / 0
Как узнать и использовать id только что прошедшей операции?
    #38763579
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как узнать и использовать id только что прошедшей операции?
    #38764000
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft LAST_INSERT_ID()

а мне почему-то кажется что это довольно опасная процедура, потому что между вставкой и вызовом этого last_insert_id() какой-нибудь другой процесс может успеть вставить что-то ещё...
...
Рейтинг: 0 / 0
Как узнать и использовать id только что прошедшей операции?
    #38764010
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixmiksoft LAST_INSERT_ID() а мне почему-то кажется что это довольно опасная процедура, потому что между вставкой и вызовом этого last_insert_id() какой-нибудь другой процесс может успеть вставить что-то ещё...Ну Вы то хоть не позорьтесь, в доку не заглянувши :(
...
Рейтинг: 0 / 0
Как узнать и использовать id только что прошедшей операции?
    #38764012
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixmiksoft LAST_INSERT_ID()

а мне почему-то кажется что это довольно опасная процедура, потому что между вставкой и вызовом этого last_insert_id() какой-нибудь другой процесс может успеть вставить что-то ещё...
чтоб не беспокоиться - делай всё в хранимке, можешь в транзакции, чтоб на 200% спалось спокойно :)
http://www.mysql.ru/docs/man/Miscellaneous_functions.html


LAST_INSERT_ID([expr])
Возвращает последнюю автоматически сгенерированную величину, которая была внесена в столбец AUTO_INCREMENT. See section 8.4.3.126 mysql_insert_id().

mysql> SELECT LAST_INSERT_ID();
-> 195

Значение последнего сгенерированного ID сохраняется на сервере для данного конкретного соединения и не будет изменено другим клиентом. Оно не будет изменено даже при обновлении другого столбца AUTO_INCREMENT конкретной величиной (то есть,
которая не равна NULL и не равна 0). При внесении большого количества строк с помощью одной команды INSERT функция
LAST_INSERT_ID() возвращает значение для первой внесенной строки. Причина этого заключается в том, что можно легко
воспроизвести точно такую же команду INSERT на другом сервере. Если задано значение аргумента expr в функции
LAST_INSERT_ID(), то величина аргумента возвращается функцией и устанавливается в качестве следующего значения, которое
будет возвращено функцией LAST_INSERT_ID(). Это можно использовать для моделирования последовательностей: Вначале создается таблица:

mysql> CREATE TABLE sequence (id INT NOT NULL);
mysql> INSERT INTO sequence VALUES (0);

Затем данную таблицу можно использовать для генерации чисел последовательности как показано ниже:

mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);

Можно генерировать последовательности без вызова LAST_INSERT_ID(): полезность применения данной функции состоит в том, что данное значение ID поддерживается на сервере как последняя автоматически сгенерированная величина (защищенная от других пользователей), и вы можете извлекать новый ID так же, как и любое другое нормальное значение AUTO_INCREMENT в MySQL. Например, функция LAST_INSERT_ID() (без аргумента) возвратит новое значение ID. Функцию C API mysql_insert_id() также можно использовать для получения этой величины. Следует учитывать, что, поскольку функция mysql_insert_id() обновляется только после команд INSERT и UPDATE, то нельзя использовать эту функцию C API для извлечения значения ID для LAST_INSERT_ID(expr) после выполнения других команд SQL, таких как SELECT или SET.
...
Рейтинг: 0 / 0
Как узнать и использовать id только что прошедшей операции?
    #38764015
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадячтоб не беспокоиться - делай всё в хранимке, можешь в транзакцииНи хранимки, ни транзакции тут ничем не помогут.
...
Рейтинг: 0 / 0
Как узнать и использовать id только что прошедшей операции?
    #38764032
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я понимаю, что
Значение последнего сгенерированного ID сохраняется на сервере для данного конкретного соединения и не будет изменено другим клиентом. Оно не будет изменено даже при обновлении другого столбца AUTO_INCREMENT конкретной величиной
этим снимаются все опасения?
...
Рейтинг: 0 / 0
Как узнать и использовать id только что прошедшей операции?
    #38764043
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяя понимаю, что
Значение последнего сгенерированного ID сохраняется на сервере для данного конкретного соединения и не будет изменено другим клиентом. Оно не будет изменено даже при обновлении другого столбца AUTO_INCREMENT конкретной величиной
этим снимаются все опасения?Опасения относительно влияния других сессий - да.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как узнать и использовать id только что прошедшей операции?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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