PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Neu zugewiesene Sequenz funktioniert nicht

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)