Jag tror att ditt problem är att du ställer in allt detta för hand istället för att använda en serial kolumn. När du använder en serial kolumn kommer PostgreSQL att skapa sekvensen, ställa in lämpligt standardvärde och se till att sekvensen ägs av tabellen och kolumnen i fråga. Från den fina manualen :
Men du använder inte serial eller bigserial alltså pg_get_serial_sequence hjälper inte.
Du kan åtgärda detta genom att göra:
alter sequence new_user_messages_id owned by user_messages.id
Jag är inte säker på om detta är en komplett lösning och någon (hej Erwin) kommer förmodligen att fylla i de saknade bitarna.
Du kan spara lite problem här genom att använda serial
som datatyp för ditt id kolumn. Det kommer att skapa och koppla upp sekvensen åt dig.
Till exempel:
=> 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)