Como especifico que uma coluna deve ser incrementada automaticamente no pgAdmin?

14

Comecei a aprender o pgAdmin III a gerenciar um banco de dados PostgreSQL. Mas não era um aplicativo fácil de usar.

Se eu crio ou criei uma tabela com o pgAdmin III, como posso adicionar a funcionalidade "incremento automático" em um ID de coluna que possui o tipo inteiro?

Jonas
fonte

Respostas:

17

duas opções: Use o "datatype" SERIAL ou crie uma sequência e use essa sequência como um valor padrão para o seu número inteiro:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;
Frank Heikens
fonte
1
Esta resposta poderia ser atualizado para incluir GENERATED BY DEFAULT AS IDENTITYintroduzido com Postgres> = 10.
Madbreaks
15

Se você quiser fazer isso no PGAdmin, é muito mais fácil do que usar a linha de comando. Parece que no PostgreSQL, para adicionar um incremento automático a uma coluna, primeiro precisamos criar uma sequência de incremento automático e adicioná-la à coluna necessária. Eu fiz assim.

1) Primeiro, você precisa se certificar de que existe uma chave primária para sua tabela. Mantenha também o tipo de dados da chave primária em bigint ou smallint. (Usei bigint, não foi possível encontrar um tipo de dados chamado serial, conforme mencionado em outras respostas em outros lugares)

2) Em seguida, adicione uma sequência clicando com o botão direito do mouse em sequência-> adicionar nova sequência . Se não houver dados na tabela, deixe a sequência como está, não faça alterações. Apenas salve. Se houver dados existentes, adicione o último ou o valor mais alto na coluna da chave primária ao valor Atual na guia Definições, como mostrado abaixo. insira a descrição da imagem aqui

3) Finalmente, adicione a linha nextval('your_sequence_name'::regclass)ao valor padrão na sua chave primária, como mostrado abaixo.

insira a descrição da imagem aqui Verifique se o nome da sequência está correto aqui. Isso é tudo e o incremento automático deve funcionar.

toing_toing
fonte
4
Discordo do "mais fácil no PgAdmin". Você acha que passar por cliques é mais fácil do que simplesmente criar uma coluna SERIAL?
ypercubeᵀᴹ
1
Devo dizer mais fácil para aqueles que estão acostumados a GUIs e se você não estiver familiarizado com as linhas de comando. :)
toing_toing 30/10/2015