sql >> Database teknologi >  >> RDS >> PostgreSQL

Nyligt tildelt sekvens fungerer ikke

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 bigserialpg_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)



  1. PostgreSQL Connection Pooling:Del 1 – Fordele og ulemper

  2. MySQL-forespørgsel for at få alder fra fødselsdato

  3. Vedligeholdelse/opdatering af postrækkefølge i mysql

  4. Foretag en engangsforespørgsel til en anden database og tabel