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

A sequência recém-atribuída não está funcionando


Acho que seu problema é que você configurou tudo isso manualmente, em vez de usar um serial coluna. Quando você usa um serial coluna, o PostgreSQL criará a sequência, configurará o valor padrão apropriado e garantirá que a sequência seja de propriedade da tabela e coluna em questão. Do manual fino :

Mas você não está usando serial ou bigserial então pg_get_serial_sequence não vai ajudar.

Você pode remediar isso fazendo:
alter sequence new_user_messages_id owned by user_messages.id

Não tenho certeza se esta é uma solução completa e alguém (oi Erwin) provavelmente preencherá os bits que faltam.

Você pode evitar alguns problemas aqui usando serial como o tipo de dados do seu id coluna. Isso criará e conectará a sequência para você.

Por exemplo:
=> create sequence seq_test_id;
=> create table seq_test (id integer not null default nextval('seq_test_id'::regclass));
=> select pg_catalog.pg_get_serial_sequence('seq_test','id');
 pg_get_serial_sequence 
------------------------

(1 row)
=> alter sequence seq_test_id owned by seq_test.id;
=> select pg_catalog.pg_get_serial_sequence('seq_test','id');
 pg_get_serial_sequence 
------------------------
 public.seq_test_id
(1 row)