5.4.42 mysql_insert_id()
uint64_t
mysql_insert_id(MYSQL *mysql)
Описание
Возвращает значение, сгенерированное для столбца AUTO_INCREMENT предыдущей операцией или . Используйте эту функцию после выполнения оператора в таблицу, содержащую столбец AUTO_INCREMENT, или после использования или для установки значения столбца с помощью .
Возвращаемое значение функции mysql_insert_id() всегда равно нулю, если явно не обновлено в одном из следующих случаев:
Операции , которые сохраняют значение в столбец
AUTO_INCREMENT. Это справедливо, как если значение генерируется автоматически при сохранении специальных значенийNULLили0в столбец, так и при сохранении явного, неспециального значения.-
В случае операции , охватывающей несколько строк, функция
mysql_insert_id()возвращает первое успешно вставленное автоматически сгенерированное значениеAUTO_INCREMENT.Если ни одна строка не была успешно вставлена, функция
mysql_insert_id()возвращает 0. Если выполняется оператор , и ни одно автоматически сгенерированное значение не было успешно вставлено, функция
mysql_insert_id()возвращает идентификатор последней вставленной строки.Если оператор использует , функция
mysql_insert_id()возвращаетexpr.Операции , которые генерируют значение
AUTO_INCREMENT, вставляя в любой столбец или обновляя любой столбец на .Если предыдущий оператор вернул ошибку, значение функции
mysql_insert_id()неопределено.
Возвращаемое значение функции mysql_insert_id() можно упростить следующим образом:
Если существует столбец
AUTO_INCREMENTи было успешно вставлено сгенерированное значение, возвращается первое такое значение.Если в операторе произошла ошибка , возвращается
expr, даже если в затронутой таблице был столбецAUTO_INCREMENT.-
Возвращаемое значение зависит от используемого оператора. При вызове после оператора :
Если в таблице существует столбец
AUTO_INCREMENT, и для него были успешно вставлены явные значения, возвращается последнее из них.
При вызове после оператора :
Если в таблице существует столбец
AUTO_INCREMENTи были успешно вставлены или обновлены явные значения, возвращается последнее из вставленных или обновленных значений.
Функция mysql_insert_id() возвращает 0, если предыдущий оператор не использует значение AUTO_INCREMENT. Если вам необходимо сохранить значение на будущее, убедитесь, что вы вызываете функцию mysql_insert_id() сразу после оператора, который генерирует это значение.
Значение функции mysql_insert_id() изменяется только операторами, выпущенными в текущем соединении с клиентом. Оно не зависит от операторов, выпущенных другими клиентами.
SQL-функция будет содержать значение первого успешно вставленного автоматически сгенерированного значения. не сбрасывается между операторами, поскольку значение этой функции сохраняется на сервере. Другое отличие от функции mysql_insert_id() состоит в том, что не обновляется, если вы устанавливаете столбец AUTO_INCREMENT на определённое неспециальное значение. См. .
Функция mysql_insert_id() возвращает 0 после оператора для хранимой процедуры, которая генерирует значение AUTO_INCREMENT, поскольку в этом случае mysql_insert_id() относится к , а не к оператору внутри процедуры. Внутри процедуры можно использовать на уровне SQL для получения значения AUTO_INCREMENT.
Причина различий между и функцией mysql_insert_id() заключается в том, что проще использовать в скриптах, в то время как mysql_insert_id() старается предоставить более точную информацию о том, что происходит со столбцом AUTO_INCREMENT.
Пакет OK, используемый в протоколе клиент/сервер, содержит информацию, например, для отслеживания состояния сессии. Когда клиенты считывают пакет OK, чтобы узнать, есть ли изменения в состоянии сессии, это сбрасывает такие значения, как последний идентификатор вставки и количество затронутых строк. Такие изменения приводят к тому, что функция mysql_insert_id() возвращает 0 после выполнения команд, включая, но не ограничиваясь, COM_PING, COM_REFRESH и COM_INIT_DB.
Возвращаемые значения
Описаны в предыдущем обсуждении.
Ошибки
-
Пользовательское значение
AUTO_INCREMENTв операторе , выполняющемся многократно, попадает в диапазон между текущим значениемAUTO_INCREMENTи суммой текущего и количества затронутых строк.
© 2025 Oracle
Licensed under the GPLv2 License.