PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

La séquence nouvellement attribuée ne fonctionne pas

Je pense que votre problème est que vous configurez tout cela à la main plutôt qu'en utilisant un serial colonne. Lorsque vous utilisez un serial colonne, PostgreSQL créera la séquence, configurera la valeur par défaut appropriée et s'assurera que la séquence appartient à la table et à la colonne en question. À partir du manuel fin :

Mais vous n'utilisez pas serial ou bigserial donc pg_get_serial_sequence n'aidera pas.

Vous pouvez y remédier en faisant :

alter sequence new_user_messages_id owned by user_messages.id

Je ne sais pas s'il s'agit d'une solution complète et quelqu'un (salut Erwin) remplira probablement les éléments manquants.

Vous pouvez vous épargner des ennuis ici en utilisant serial comme type de données de votre id colonne. Cela créera et connectera la séquence pour vous.

Par exemple :

=> 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)