8.4. Интерфейс C для MySQL
8.4.6. Основные вопросы и проблемы в использовании интерфейса C
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 во второй таблице
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|