Spec-Zone.ru › MySQL Connectors 1.0

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() можно упростить следующим образом:

  1. Если существует столбец AUTO_INCREMENT и было успешно вставлено сгенерированное значение, возвращается первое такое значение.

  2. Если в операторе произошла ошибка , возвращается expr, даже если в затронутой таблице был столбец AUTO_INCREMENT.

  3. Возвращаемое значение зависит от используемого оператора. При вызове после оператора :

    • Если в таблице существует столбец 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.
https://docs.oracle.com/cd/E17952_01/c-api-8.0-en/mysql-insert-id.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API