Мисля, че проблемът ви е, че настройвате всичко това на ръка, вместо да използвате serial
колона. Когато използвате serial
колона, PostgreSQL ще създаде последователността, ще настрои подходящата стойност по подразбиране и ще гарантира, че последователността е собственост на въпросната таблица и колона. От фино ръководство :
Но вие не използвате serial
или bigserial
така че pg_get_serial_sequence
няма да помогне.
Можете да поправите това, като направите:
alter sequence new_user_messages_id owned by user_messages.id
Не съм сигурен дали това е пълно решение и някой (здравей Ервин) вероятно ще попълни липсващите части.
Можете да си спестите някои проблеми тук, като използвате serial
като тип данни на вашия id
колона. Това ще създаде и свърже последователността вместо вас.
Например:
=> 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)