J'utilise SELECT lastval () pour obtenir un mauvais identifiant de série après avoir tronqué la table.
quand je tronque la table, j'utilise SELECT lastval (), j'ai le mauvais ID /
Essayer
TRUNCATE TABLE table_name
RESTART IDENTITY;
Ce sera
Redémarrez automatiquement les séquences appartenant aux colonnes des tables tronquées.
Détails ici: TRONQUER
Voici la manière standard de réinitialiser la séquence:
truncate table table_name restart identity;
mais dans certaines versions et plates-formes, c'est une erreur de syntaxe,
dans ce cas, vous pouvez tronquer sans réinitialiser la séquence et modifier la séquence avec un autre sql, essayez ceci:
truncate table table_name;
alter sequence seq_name start 1;
Vérifiez le prochain
ALTER SEQUENCE sequence_name RESTART WITH 1;
Si vous souhaitez réinitialiser la séquence, alors:
setval('sequence_name', 0)
Pour répertorier les noms de séquence existants, émettez un \ds
à l'invite psql.
La meilleure façon de réinitialiser une séquence pour recommencer avec le numéro 1 est d'exécuter ce qui suit après l'avoir tronquée avec succès:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
Ainsi, par exemple pour la table des utilisateurs, ce serait:
ALTER SEQUENCE users_id_seq RESTART WITH 1