En serial
kolumn drar bara nästa nummer från en sekvens som standard . Om du skriver ett värde till det kommer standardvärdet inte att slå in. Du kan bara COPY
till bordet (se @Saravanans svar
) och uppdatera sedan sekvensen därefter. En sätt att göra detta:
SELECT setval('tbl_tbl_id_seq', max(tbl_id)) FROM tbl;
tbl_id
är seriekolumnen i tabellen tbl
, ritning från sekvensen tbl_tbl_id_seq
(standardnamn).
Bäst i en enskild transaktion vid samtidig belastning.
Observera att det inte finns något off-by-1-fel här. Per dokumentation:
Djärv betoning min.