Réinitialiser la clé primaire PostgreSQL à 1

Est-il possible de réinitialiser la clé primaire d’une table PostgreSQL pour qu’elle recommence à 1 sur une table remplie?

En ce moment, il génère des chiffres à partir de 1000000 et plus. Je veux tout réinitialiser et commencer à 1, en gardant toutes mes données existantes intactes.

Les clés primaires auto-incrémentées (c.-à-d. Les colonnes avec le type de données serial primary key ) sont associées à une séquence . Vous pouvez définir la valeur suivante pour n’importe quelle séquence en utilisant setval(,) .

Le nom des séquences créées automatiquement lors de l’utilisation de serial est

__seq

La meilleure façon de réinitialiser une séquence pour commencer avec le numéro 1 consiste à exécuter les opérations suivantes:

 ALTER SEQUENCE __seq RESTART WITH 1 

Ainsi, par exemple pour la table des users , ce serait:

 ALTER SEQUENCE users_id_seq RESTART WITH 1 

@bluish insérer réellement un nouvel enregistrement en utilisant une clé primaire auto-incrémentée, c’est comme utiliser explicitement une séquence de cette manière:

 INSERT INTO MyTable (id, col1, ...) VALUES (MySeq.nextval(), val1, ...) 

Donc, si vous voulez que le premier identifiant soit 1, vous devez définir votre séquence sur 0. Mais il est hors limites, vous devez donc utiliser l’instruction ALTER SEQUECE. Donc, si vous avez un champ série nommé numéro dans votre menu de table, par exemple:

 ALTER SEQUENCE menu_number_seq RESTART 

fera le travail parfaitement.