|
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 столбец.
Описанный в предыдущем обсуждении.
Ни один.