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

PostgreSQL AUTO INCREMENT(自动增长)

AUTO INCREMENT (aumento automatico) genererà un numero unico ogni volta che viene inserito un nuovo record nella tabella.

PostgreSQL utilizza sequenze per identificare l'aumento automatico dei campi, i tipi di dati sono smallserial, serial e bigserial. Queste proprietà sono simili all'attributo AUTO_INCREMENT supportato dal database MySQL.

Ecco l'istruzione per impostare l'aumento automatico in 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 utilizza l'attributo AUTO_INCREMENT per identificare l'aumento automatico dei campi.

PostgreSQL utilizza sequenze per identificare l'aumento automatico dei campi:

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

Intervallo di SMALLSERIAL, SERIAL e BIGSERIAL:

Tipo pseudoDimensione di archiviazioneIntervallo
SMALLSERIAL2 byte1 a 32,767
SERIAL4 byte1 a 2,147,483,647
BIGSERIAL8 byte1 a 922,337,2036,854,775,807

Sintassi

La sintassi di base del tipo di dati SERIAL è la seguente:

CREATE TABLE tablename (
   colname SERIAL
);

Esempio online

Supponiamo di voler creare una tabella COMPANY e creare i seguenti campi:

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

Ora inseriamo alcune righe nella tabella:

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);

Ecco i record della tabella COMPANY:

 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