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.