поиск:
Полезные ссылки

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


  • PHP конференция 2005
    Подробности!

    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 во второй таблице
    
     
    © 1997-2005 PHP Club Team
    Rambler's Top100