En serial
kolonne trækker kun det næste tal fra en sekvens som standard . Hvis du skriver en værdi til den, vil standarden ikke slå ind. Du kan bare COPY
til bordet (se @Saravanans svar
) og opdater derefter sekvensen i overensstemmelse hermed. En måde at gøre dette på:
SELECT setval('tbl_tbl_id_seq', max(tbl_id)) FROM tbl;
tbl_id
er den serielle kolonne i tabellen tbl
, tegning fra sekvensen tbl_tbl_id_seq
(standardnavn).
Bedst i en enkelt transaktion i tilfælde af samtidig belastning.
Bemærk, der er ingen off-by-1 fejl her. Pr. dokumentation:
Fed fremhævelse mine.