Un serial
colonna disegna solo il numero successivo da una sequenza per impostazione predefinita . Se ci scrivi un valore, il valore predefinito non si avvierà. Puoi semplicemente COPY
alla tabella (vedi la risposta di @Saravanan
) e quindi aggiornare la sequenza di conseguenza. Uno modo per farlo:
SELECT setval('tbl_tbl_id_seq', max(tbl_id)) FROM tbl;
tbl_id
essendo la colonna seriale della tabella tbl
, attingendo dalla sequenza tbl_tbl_id_seq
(nome predefinito).
Il migliore in una singola transazione in caso di carico simultaneo.
Nota, non c'è nessun errore off-by-1 qui. Per documentazione:
Enfasi in grassetto la mia.