sql >> Base de Datos >  >> RDS >> PostgreSQL

La secuencia recién asignada no funciona

Creo que su problema es que configuró todo esto a mano en lugar de usar un serial columna. Cuando usas un serial columna, PostgreSQL creará la secuencia, configurará el valor predeterminado adecuado y se asegurará de que la secuencia sea propiedad de la tabla y la columna en cuestión. Del buen manual :

Pero no estás usando serial o bigserial entonces pg_get_serial_sequence no ayudará.

Puede remediar esto haciendo:

alter sequence new_user_messages_id owned by user_messages.id

No estoy seguro de si esta es una solución completa y alguien (hola Erwin) probablemente completará las partes que faltan.

Puede ahorrarse algunos problemas aquí usando serial como el tipo de datos de su id columna. Eso creará y conectará la secuencia por ti.

Por ejemplo:

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