Een serial
kolom tekent alleen het volgende nummer uit een reeks standaard . Als je er een waarde naar schrijft, wordt de standaardwaarde niet geactiveerd. Je kunt gewoon COPY
naar de tafel (zie @Saravanan' antwoord
) en werk vervolgens de volgorde dienovereenkomstig bij. Eén manier om dit te doen:
SELECT setval('tbl_tbl_id_seq', max(tbl_id)) FROM tbl;
tbl_id
zijnde de seriële kolom van tabel tbl
, tekenend uit de reeks tbl_tbl_id_seq
(standaardnaam).
Het beste in een enkele transactie in geval van gelijktijdige belasting.
Let op, er is hier geen off-by-1-fout. Per documentatie:
Vetgedrukte nadruk van mij.