8.4.6.3 Как получить уникальный идентификатор для последней внесенной строки?
При внесении записи в таблицу, содержащую столбец с атрибутом
AUTO_INCREMENT
, последний сгенерированный идентификатор можно получить,
вызвав функцию mysql_insert_id()
.
Для извлечения этого id
можно также использовать функцию LAST_INSERT_ID()
в строке запроса, передаваемой в mysql_query()
.
Для проверки, используется или нет поле AUTO_INCREMENT
, можно выполнить
следующий код. Этот код также проверяет, был ли данный запрос вида INSERT
с использованием AUTO_INCREMENT
:
if (mysql_error(&mysql)[0] == 0 &&
mysql_num_fields(result) == 0 &&
mysql_insert_id(&mysql) != 0)
{
used_id = mysql_insert_id(&mysql);
}
Самое последнее сгенерированное значение идентификатора сохраняется на
сервере в течение времени жизни данного соединения. Это значение не может
быть изменено другим клиентом, более того, оно не будет изменено даже при
обновлении другого столбца AUTO_INCREMENT
конкретной величиной (т.е. не
NULL
или 0
).
Идентификатор, который был сгенерирован для одной таблицы, можно вставить
в другую таблицу, используя команды SQL, как показано ниже:
INSERT INTO foo (auto,text)
VALUES(NULL,'text'); # генерация ID вставкой NULL
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),'text'); # использование ID во второй таблице