English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PostgreSQL AUTO INCREMENT(自动增长)

AUTO INCREMENT (croissance automatique) génère un nombre unique lors de l'insertion d'un nouveau record dans la table.

PostgreSQL utilise des séries pour identifier la croissance automatique des champs, les types de données sont smallserial, serial et bigserial. Ces attributs sont similaires à l'attribut AUTO_INCREMENT pris en charge par la base de données MySQL.

Voici la commande pour définir la croissance automatique avec MySQL :

CREATE TABLE IF NOT EXISTS `w3codebox_tbl`(
   `w3codebox_id` INT UNSIGNED AUTO_INCREMENT,
   `w3codebox_title` VARCHAR(100) NOT NULL,
   `w3codebox_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `w3codebox_id)`
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

MySQL utilise l'attribut AUTO_INCREMENT pour identifier la croissance automatique des champs.

PostgreSQL utilise des séries pour identifier la croissance automatique des champs :

CREATE TABLE w3codebox
(
    id serial NOT NULL,
    alttext text,
    imgurl text
)

Portée de SMALLSERIAL、SERIAL et BIGSERIAL :

Type pseudoTaille de stockagePortée
SMALLSERIAL2octets1 à 32,767
SERIAL4octets1 à 2,147,483,647
BIGSERIAL8octets1 à 922,337,2036,854,775,807

Syntaxe

SERIAL  Type de données syntaxe de base如下:

CREATE TABLE tablename (
   colname SERIAL
);

Exemple en ligne

Assumons que nous devons créer une table COMPANY et créer les champs suivants :

w3codeboxdb=# CREATE TABLE COMPANY (
   ID  SERIAL PRIMARY KEY,
   NAME           TEXT      NOT NULL,
   AGE            INT       NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Maintenant, insérez quelques enregistrements dans la table :

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'James', 24, 'Houston', 10000.00 );

Voir les enregistrements de la table COMPANY tels que suit :

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000