3.6.9 Получение уникального идентификатора последней вставленной строки
Если вы вставляете запись в таблицу, содержащую столбец AUTO_INCREMENT, вы можете получить значение, сохраненное в этот столбец, вызвав функцию mysql_insert_id().
Вы можете проверить из ваших приложений на C, было ли значение сохранено в столбец AUTO_INCREMENT, выполнив следующий код (предполагается, что вы проверили, что операция прошла успешно). Он определяет, была ли операция запросом с индексом AUTO_INCREMENT:
if ((result = mysql_store_result(&mysql)) == 0 &&
mysql_field_count(&mysql) == 0 &&
mysql_insert_id(&mysql) != 0)
{
used_id = mysql_insert_id(&mysql);
}
Когда было сгенерировано новое значение AUTO_INCREMENT, вы также можете получить его, выполнив оператор SELECT
LAST_INSERT_ID() с помощью mysql_real_query() или mysql_query() и извлекая значение из набора результатов, возвращённого оператором.
При вставке нескольких значений возвращается последнее автоматически инкрементированное значение.
Для сервера, последнее сгенерированный идентификатор хранится на уровне соединения. Он не изменяется другим клиентом. Он не изменяется даже если вы обновите другой столбец AUTO_INCREMENT с не магическим значением (т.е. значением, которое не является NULL и не является 0). Одновременное использование столбцов и AUTO_INCREMENT из нескольких клиентов является абсолютно допустимым. Каждый клиент получит последний вставленный идентификатор для последнего оператора, который он выполнил.
Если вы хотите использовать идентификатор, сгенерированный для одной таблицы, и вставить его во вторую таблицу, вы можете использовать такие SQL-оператор:
INSERT INTO foo (auto,text)
VALUES(NULL,'text'); # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),'text'); # use ID in second table
mysql_insert_id() возвращает значение, сохранённое в столбец AUTO_INCREMENT, вне зависимости от того, было ли это значение сгенерировано автоматически при сохранении NULL или 0, или было указано в явном виде. возвращает только автоматически сгенерированные значения AUTO_INCREMENT. Если вы сохраняете явное значение, отличное от NULL или 0, это не повлияет на значение, возвращаемое функцией.
Для получения дополнительной информации о получении последнего идентификатора в столбце AUTO_INCREMENT:
Для получения информации о , которое может использоваться в SQL-операторе, обратитесь к .
Для получения информации о
mysql_insert_id(), функции, используемой из C API, см. Раздел 5.4.38, «mysql_insert_id()».Для получения информации о получении автоматически инкрементированного значения при использовании Connector/J, см. Получение значений столбца
AUTO_INCREMENTчерез JDBC.Для получения информации о получении автоматически инкрементированного значения при использовании Connector/ODBC, см. Получение значений автоинкрементирования.
© 2025 Oracle
Licensed under the GPLv2 License.