Ich denke, Ihr Problem ist, dass Sie dies alles von Hand einrichten, anstatt eine Seriennummer
zu verwenden Säule. Wenn Sie eine Seriennummer
verwenden Spalte erstellt PostgreSQL die Sequenz, richtet den entsprechenden Standardwert ein und stellt sicher, dass die Sequenz der betreffenden Tabelle und Spalte gehört. Aus dem feines Handbuch :
Aber Sie verwenden nicht serial
oder bigserial
also pg_get_serial_sequence
wird nicht helfen.
Sie können dies folgendermaßen beheben:
alter sequence new_user_messages_id owned by user_messages.id
Ich bin mir nicht sicher, ob dies eine vollständige Lösung ist und jemand (hi Erwin) wird wahrscheinlich die fehlenden Bits ergänzen.
Sie können sich hier einigen Ärger ersparen, indem Sie Seriennummer
als Datentyp Ihrer id
Säule. Dadurch wird die Sequenz für Sie erstellt und verknüpft.
Zum Beispiel:
=> 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)