PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Coluna da tabela de incremento automático

Postgres 10 ou posterior


serial colunas (veja abaixo) permanecem inalteradas. Mas considere uma IDENTITY coluna. O Postgres 10 implementa esse recurso SQL padrão.

Sintaxe e informações básicas no manual para CREATE TABLE .
Explicação detalhada nesta entrada de blog de seu autor principal Peter Eisentraut.

Criar tabela com IDENTITY coluna

CREATE TABLE staff (
   staff_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
 , staff    text NOT NULL
);

Adicionar IDENTITY coluna para a tabela existente


A tabela pode ou não ser preenchida com linhas.
ALTER TABLE staff ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY;

Para também torná-lo o PK ao mesmo tempo (a mesa ainda não pode ter um PK):
ALTER TABLE staff ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY;

Relacionado:
  • Como adicionar uma coluna de identidade do PostgreSQL 10 a uma tabela existente com linhas?

Substituir serial com IDENTITY coluna


Ver:
  • Como alterar um ID de tabela de serial para identity?

Postgres 9.6 ou anterior


(Ou qualquer versão, na verdade.)
Use o serial pseudo tipo de dados em vez disso:
CREATE TABLE staff (
   staff_id serial PRIMARY KEY,
 , staff    text NOT NULL
);

Ele cria e anexa o objeto de sequência automaticamente e define o DEFAULT para nextval() da sequência. Ele faz tudo que você precisa.

Eu usei identificadores de letras minúsculas no meu exemplo. Facilita sua vida com o Postgres.