Spec-Zone .ru
спецификации, руководства, описания, API

22.8.7.37. mysql_insert_id()

my_ulonglong mysql_insert_id(MYSQL *mysql)

Описание

Возвращает значение, сгенерированное для AUTO_INCREMENT столбец предыдущим INSERT или UPDATE оператор. Используйте эту функцию после того, как Вы выполнили INSERT оператор в таблицу, которая содержит AUTO_INCREMENT поле, или использовали INSERT или UPDATE установить значение столбца с LAST_INSERT_ID(expr).

Возвращаемое значение mysql_insert_id() всегда нуль если явно не обновлено при одном из следующих условий:

Возвращаемое значение mysql_insert_id() может быть упрощен до следующей последовательности:

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

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

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

    • Если есть AUTO_INCREMENT столбец в таблице, и был некоторыми явными значениями для этого столбца, которые были успешно вставлены в таблицу, возвращают последнее из явных значений.

    Когда вызвано после INSERT ... ON DUPLICATE KEY UPDATE оператор:

    • Если есть AUTO_INCREMENT столбец в таблице и там был некоторыми явными успешно вставленными значениями или некоторыми обновленными значениями, возвращает последнее из вставленных или обновленных значений.

mysql_insert_id() возвраты 0 если предыдущий оператор не использует AUTO_INCREMENT значение. Если Вы должны сохранить значение для позже, убедитесь, что вызвали mysql_insert_id() сразу после оператора, который генерирует значение.

Значение mysql_insert_id() влияется только заявлениями, сделанными в пределах текущего клиентского соединения. На это не влияют заявления, сделанные другими клиентами.

LAST_INSERT_ID() Функция SQL будет содержать значение первого автоматически сгенерированного значения, которое было успешно вставлено. LAST_INSERT_ID() не сбрасывается между операторами, потому что значение той функции сохраняется в сервере. Другое различие от mysql_insert_id() это LAST_INSERT_ID() не обновляется, если Вы устанавливаете AUTO_INCREMENT столбец к определенному неспециальному значению. См. Раздел 12.14, "информационные Функции".

mysql_insert_id() возвраты 0 после a CALL оператор для хранимой процедуры, которая генерирует AUTO_INCREMENT оцените потому что в этом случае mysql_insert_id() применяется к CALL а не оператор в пределах процедуры. В пределах процедуры можно использовать LAST_INSERT_ID() на уровне SQL, чтобы получить AUTO_INCREMENT значение.

Причина различий между LAST_INSERT_ID() и mysql_insert_id() это LAST_INSERT_ID() делается удобным в сценариях в то время как mysql_insert_id() попытки предоставить более точную информацию о том, что происходит с AUTO_INCREMENT столбец.

Возвращаемые значения

Описанный в предыдущем обсуждении.

Ошибки

Ни один.