web-dev-qa-db-fra.com

La séquence ne se réinitialise pas après avoir tronqué la table

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 /

29
user1369887

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

64
Igor Romanchenko

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;
19
Eric Wang

Vérifiez le prochain

ALTER SEQUENCE sequence_name RESTART WITH 1;
3
Daniel Gastón

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.

2
Clodoaldo Neto

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
2
jahmed31