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

La nuova sequenza assegnata non funziona

Penso che il tuo problema sia che hai impostato tutto a mano piuttosto che usando un serial colonna. Quando utilizzi un serial colonna, PostgreSQL creerà la sequenza, imposterà il valore predefinito appropriato e si assicurerà che la sequenza sia di proprietà della tabella e della colonna in questione. Dal manuale di precisione :

Ma non stai usando serial o bigserial quindi pg_get_serial_sequence non aiuterà.

Puoi rimediare facendo:

alter sequence new_user_messages_id owned by user_messages.id

Non sono sicuro che questa sia una soluzione completa e qualcuno (ciao Erwin) probabilmente riempirà i bit mancanti.

Puoi risparmiarti qualche problema qui usando serial come tipo di dati del tuo id colonna. Questo creerà e collegherà la sequenza per te.

Ad esempio:

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