Jeg tror, dit problem er, at du sætter alt dette op i hånden i stedet for ved at bruge en serial
kolonne. Når du bruger en serial
kolonne, vil PostgreSQL oprette sekvensen, opsætte den passende standardværdi og sikre, at sekvensen ejes af den pågældende tabel og kolonne. Fra den fine manual :
Men du bruger ikke serial
eller bigserial
så pg_get_serial_sequence
vil ikke hjælpe.
Du kan afhjælpe dette ved at gøre:
alter sequence new_user_messages_id owned by user_messages.id
Jeg er ikke sikker på, om dette er en komplet løsning, og nogen (hej Erwin) vil sandsynligvis udfylde de manglende bits.
Du kan spare dig selv for nogle problemer her ved at bruge serial
som datatypen for dit id
kolonne. Det vil oprette og tilslutte sekvensen for dig.
For eksempel:
=> 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)