Un serial
la colonne ne tire que le numéro suivant d'une séquence par défaut . Si vous y écrivez une valeur, la valeur par défaut ne s'appliquera pas. Vous pouvez simplement COPY
à la table (voir la réponse de @Saravanan
), puis mettez à jour la séquence en conséquence. Un façon de faire :
SELECT setval('tbl_tbl_id_seq', max(tbl_id)) FROM tbl;
tbl_id
étant la colonne série de la table tbl
, tiré de la séquence tbl_tbl_id_seq
(nom par défaut).
Meilleur dans une transaction unique en cas de chargement simultané.
Notez qu'il n'y a pas d'erreur off-by-1 ici. Par documentation :
J'insiste sur moi.