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

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


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

    3.5.9. Использование атрибута AUTO_INCREMENT

    Атрибут AUTO_INCREMENT может использоваться для генерации уникального идентификатора для новых строк:

    CREATE TABLE animals (
                 id MEDIUMINT NOT NULL AUTO_INCREMENT,
                 name CHAR(30) NOT NULL,
                 PRIMARY KEY (id)
                 );
    INSERT INTO animals (name) VALUES ("dog"),("cat"),("penguin"),
                                      ("lax"),("whale");
    SELECT * FROM animals;
    

    Что вернет:

    +----+---------+
    | id | name    |
    +----+---------+
    |  1 | dog     |
    |  2 | cat     |
    |  3 | penguin |
    |  4 | lax     |
    |  5 | whale   |
    +----+---------+
    

    Вы можете получить AUTO_INCREMENT ключ с помощью функции SQL LAST_INSERT_ID() или с помощью функции mysql_insert_id() интерфейса C.

    Для многострочной вставки, LAST_INSERT_ID()/mysql_insert_id() на самом деле вернут AUTO_INCREMENT значение для первой вставленной записи. Это сделано для того, чтобы многострочные вставки можно было повторить на других серверах.

    В таблицах MyISAM и BDB можно определить AUTO_INCREMENT для вторичного столбца составного ключа. В этом случае значение, генерируемое для автоинкрементного столбца, вычисляется как MAX(auto_increment_column)+1) WHERE prefix=given-prefix. Столбец с атрибутом AUTO_INCREMENT удобно использовать, когда данные нужно помещать в упорядоченные группы.

    CREATE TABLE animals (
                 grp ENUM('fish','mammal','bird') NOT NULL,
                 id MEDIUMINT NOT NULL AUTO_INCREMENT,
                 name CHAR(30) NOT NULL,
                 PRIMARY KEY (grp,id)
                 );
    INSERT INTO animals (grp,name) VALUES("mammal","dog"),("mammal","cat"),
                      ("bird","penguin"),("fish","lax"),("mammal","whale");
    SELECT * FROM animals ORDER BY grp,id;
    

    Что вернет:

    +--------+----+---------+
    | grp    | id | name    |
    +--------+----+---------+
    | fish   |  1 | lax     |
    | mammal |  1 | dog     |
    | mammal |  2 | cat     |
    | mammal |  3 | whale   |
    | bird   |  1 | penguin |
    +--------+----+---------+
    

    Обратите внимание, что в этом случае значение AUTO_INCREMENT будет использоваться повторно, если в какой-либо группе удаляется строка, содержащая наибольшее значение AUTO_INCREMENT.

     
    © 1997-2005 PHP Club Team
    Rambler's Top100