При внесении записи в таблицу, содержащую столбец с атрибутом
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 во второй таблице