PostgreSQL - AUTO INCREMENT
PostgreSQL possui os tipos de dados smallserial , serial e bigserial ; esses não são tipos verdadeiros, mas apenas uma notação conveniente para criar colunas de identificador exclusivo. Eles são semelhantes à propriedade AUTO_INCREMENT suportada por alguns outros bancos de dados.
Se você deseja que uma coluna serial tenha uma restrição exclusiva ou seja uma chave primária, agora ela deve ser especificada, como qualquer outro tipo de dados.
O nome do tipo serial cria colunas inteiras . O nome do tipo bigserial cria uma coluna bigint . bigserial deve ser usado se você antecipar o uso de mais de 2 31 identificadores durante a vida útil da tabela. O nome do tipo smallserial cria uma coluna smallint .
Sintaxe
O uso básico de SERIAL dataype é o seguinte -
CREATE TABLE tablename (
colname SERIAL
);
Exemplo
Considere a tabela COMPANY a ser criada da seguinte forma -
testdb=# CREATE TABLE COMPANY(
ID SERIAL PRIMARY KEY,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
Agora, insira os seguintes registros na tabela COMPANY -
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 );
Isso irá inserir sete tuplas na tabela EMPRESA e EMPRESA terá os seguintes registros -
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