Myślę, że twój problem polega na tym, że ustawiasz to wszystko ręcznie, a nie za pomocą serial
kolumna. Kiedy używasz serial
kolumna, PostgreSQL utworzy sekwencję, ustawi odpowiednią wartość domyślną i upewni się, że sekwencja jest własnością danej tabeli i kolumny. Z dokładnej instrukcji :
Ale nie używasz serial
lub bigserial
więc pg_get_serial_sequence
nie pomoże.
Możesz temu zaradzić, wykonując:
alter sequence new_user_messages_id owned by user_messages.id
Nie jestem pewien, czy jest to kompletne rozwiązanie i ktoś (cześć Erwin) prawdopodobnie uzupełni brakujące fragmenty.
Tutaj możesz zaoszczędzić sobie trochę kłopotów, używając serial
jako typ danych Twojego id
kolumna. To utworzy i połączy sekwencję dla Ciebie.
Na przykład:
=> 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)