Comment réinitialiser une séquence dans PostgreSQL

Comment Reinitialiser Une Sequence Dans Postgresql



L'utilisation de la séquence PostgreSQL est un moyen efficace de travailler avec une valeur d'auto-incrémentation, en particulier pour les clés primaires. Lorsque la valeur de départ n'est pas définie, l'auto-incrémentation pour INT commencera à 0. Cependant, vous pouvez spécifier quelle valeur de départ utiliser pour la séquence dans votre colonne d'auto-incrémentation.

De plus, si vous vous trouvez dans une situation qui vous oblige à modifier la valeur suivante de la séquence, vous pouvez rapidement réinitialiser la séquence et spécifier par quelle valeur commencer pour l'entrée suivante du tableau. Tous les détails que vous devez savoir sur la façon de réinitialiser une séquence dans PostgreSQL sont détaillés dans cet article. Regarde!

Exemple sur la façon de réinitialiser une séquence dans PostgreSQL

Avec une colonne INT, vous pouvez créer une séquence d'auto-incrémentation et l'utiliser comme clé primaire pour votre table. De cette façon, vous n'aurez pas besoin de saisir ses valeurs lors de l'exécution d'une requête INSERT puisque les valeurs entières seront générées automatiquement. Une fois la séquence créée, la commande ALTER SEQUENCE vous permet de redémarrer la séquence et de spécifier une nouvelle valeur de départ pour les nouvelles entrées.







Pour cet exemple, nous travaillerons avec le tableau « user_details » suivant. Notre objectif est la colonne « user_id » qui est une séquence d’auto-incrémentation commençant à 100.





Pour lister les différentes séquences de votre base de données, exécutez la commande suivante :





\ds

Pour notre cas, nous ciblons la séquence « user_id ».



Pour obtenir plus de détails sur la séquence, exécutez la requête « select » comme illustré ci-dessous :

SELECT * FROM nom_séquence ;

Nous pouvons voir que la dernière valeur de la séquence existante est 104. Nous réinitialisons cette valeur et définissons une nouvelle valeur qu'auront les nouvelles entrées.

Pour réinitialiser la séquence PostgreSQL, utilisez la commande suivante :

ALTER SEQUENCE nom_séquence RESTART AVEC valeur ;

Dans notre cas, disons que nous voulons redémarrer la séquence et démarrer les nouvelles entrées à 20. Après avoir exécuté la commande suivante, nous obtenons une sortie, comme indiqué ci-dessous, qui confirme que la séquence a été modifiée.

Si nous réexécutons la commande précédente pour obtenir les détails de notre séquence à l'aide de l'instruction SELECT, nous pouvons voir que la nouvelle « last_value » pour ce cas est la valeur que nous avons spécifiée avec la commande ALTER.

Insérons une nouvelle entrée dans notre tableau pour voir ce qui se passe. L'image suivante montre la requête INSERT et les résultats que nous obtenons après l'exécution de l'instruction SELECT. Remarquez comment la nouvelle entrée a son « user_id » défini sur 20. Toutes les nouvelles entrées que nous créons verront leur « user_id » généré en fonction de la dernière valeur qui est 20.

Si nous effectuons une autre entrée, son « user_id » sera 21 et la séquence se déroulera en utilisant la même logique. C'est ainsi que vous réinitialisez une séquence dans PostgreSQL. Notez que la commande « reset » n'affecte pas les enregistrements existants. Il définit uniquement la nouvelle valeur de départ pour les entrées que vous effectuez après avoir réinitialisé la séquence.

Conclusion

Avec PostgreSQL, disposer d'un moyen de générer automatiquement les valeurs entières dans votre colonne de clé primaire simplifie les choses. Lorsque vous avez une séquence existante, vous pouvez utiliser la touche ALTER SEQUENCE
avec l'option RESTART WITH pour spécifier la séquence que vous souhaitez réinitialiser et quelle valeur définir comme dernière valeur de la séquence. De cette façon, les nouvelles entrées auront la valeur entière générée en fonction de la nouvelle dernière valeur. Reportez-vous à l'exemple présenté pour comprendre comment fonctionne la réinitialisation d'une séquence PostgreSQL.