Por que você não adiciona um
serial
coluna de chave primária para a tabela? ALTER TABLE login ADD column login_id serial;
ALTER TABLE login ADD CONSTRAINT login_pkey PRIMARY KEY(login_id);
A primeira operação irá reescrever a tabela e travar por algum tempo.
VACCUM FULL ANALYZE login;
Alternativas inferiores:
row_number()
como apontado por @Joachim
. Para desempenho máximo, você pode deixar o OVER
cláusula vazia:row_number() OVER () AS rn
À parte:use o
AS
palavra-chave para aliases de coluna (enquanto eles são apenas ruído para aliases de tabela). Ou você pode usar o
ctid
como substituto do pobre para uma chave primária. Isso seria ainda mais rápido :Detalhes:
Geração de sequência em ordem
Exemplo em dba.SE:
numerando linhas consecutivamente para um número de tabelas