Defina o valor padrão ao adicionar a nova coluna:
create sequence rid_seq;
alter table test add column rid integer default nextval('rid_seq');
Alterar o valor padrão para colunas existentes não altera os dados existentes porque o banco de dados não tem como saber quais valores devem ser alterados; não há o sinalizador "esta coluna tem o valor padrão" nos valores da coluna, há apenas o valor padrão (originalmente NULL, pois você não especificou mais nada) e o valor atual (também NULL), mas há uma maneira de dizer a diferença entre "NULL porque é o padrão" e "NULL porque foi definido explicitamente como NULL". Então, quando você faz isso em duas etapas:
- Adicionar coluna.
- Altere o valor padrão.
O PostgreSQL não aplicará o valor padrão à coluna que você acabou de adicionar. No entanto, se você adicionar a coluna e fornecer o valor padrão ao mesmo tempo, o PostgreSQL saberá quais linhas têm o valor padrão (todas elas) para que possa fornecer valores à medida que a coluna é adicionada.
A propósito, você provavelmente quer um NOT NULL nessa coluna também:
create sequence rid_seq;
alter table test add column rid integer not null default nextval('rid_seq');
E, como a_horse_with_no_name notas, se você pretende usar apenas
rid_seq
para seu test.rid
coluna, você pode querer definir sua coluna proprietária
para test.rid
para que a sequência seja descartada se a coluna for removida:alter sequence rid_seq owned by test.rid;