Spec-Zone .ru
спецификации, руководства, описания, API
|
my_ulonglong mysql_insert_id(MYSQL *mysql)
Возвращает значение, сгенерированное для AUTO_INCREMENT
столбец предыдущим INSERT
или UPDATE
оператор. Используйте эту функцию после того, как Вы выполнили INSERT
оператор в таблицу, которая содержит AUTO_INCREMENT
поле, или использовали INSERT
или UPDATE
установить значение столбца с LAST_INSERT_ID(
. expr
)
Возвращаемое значение mysql_insert_id()
всегда нуль если явно не обновлено при одном из следующих условий:
INSERT
операторы, которые хранят значение в AUTO_INCREMENT
столбец. Это - истина, сгенерировано ли значение автоматически, храня специальные значения NULL
или 0
в столбец, или явное
неспециальное значение.
В случае многократной строки INSERT
оператор, mysql_insert_id()
возвращает первое, автоматически сгенерированное AUTO_INCREMENT
значение, которое было успешно вставлено.
Если никакие строки успешно не вставляются, mysql_insert_id()
возвраты 0.
Если INSERT ...
SELECT
оператор выполняется, и никакое автоматически сгенерированное значение успешно не
вставляется, mysql_insert_id()
возвращает ID последней вставленной строки.
Если INSERT ...
SELECT
использование оператора LAST_INSERT_ID(
, expr
)mysql_insert_id()
возвраты expr
.
INSERT
операторы, которые генерируют AUTO_INCREMENT
значение, вставляя LAST_INSERT_ID(
в любой
столбец или обновляя любой столбец к expr
)LAST_INSERT_ID(
. expr
)
Если предыдущий оператор, возвращенный ошибка, значение mysql_insert_id()
неопределено.
Возвращаемое значение mysql_insert_id()
может быть упрощен до следующей последовательности:
Если есть AUTO_INCREMENT
столбец, и автоматически
сгенерированное значение были успешно вставлены, возвратите первое такое значение.
Если LAST_INSERT_ID(
произошедший в операторе, возвратиться expr
)expr
, даже если было
AUTO_INCREMENT
столбец в таблице, на которую влияют.
Возвращаемое значение изменяется в зависимости от используемого оператора. Когда
вызвано после 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
столбец.
Описанный в предыдущем обсуждении.
Ни один.