"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment réinitialiser la séquence de clé primaire Postgres hors synchronisation avec les lignes de table?

Comment réinitialiser la séquence de clé primaire Postgres hors synchronisation avec les lignes de table?

Publié le 2025-04-17
Parcourir:553

How Can I Reset a Postgres Primary Key Sequence Out of Sync with Table Rows?

Résolution des écarts de séquence de clé primaire postgresql

Une séquence de clé primaire mal alignée avec les lignes de votre table peut provoquer des erreurs de clés en double frustrantes. Cela se produit souvent lors des importations de données ou des restaurations où l'intégrité des séquences n'est pas conservée. Voici comment le réparer:

1. Trouvez l'ID le plus élevé:

Utilisez la fonction max () pour identifier le plus grand ID de votre table:

SELECT MAX(id) FROM your_table;

2. Obtenez la prochaine valeur de la séquence:

Cette requête montre la prochaine valeur générée de la séquence:

SELECT nextval('your_table_id_seq');

3. Réinitialiser la séquence (si nécessaire):

Si la valeur suivante de la séquence est plus petite que l'ID maximum du tableau, réinitialisez la séquence dans une transaction pour empêcher les inserts simultanés:

BEGIN;
LOCK TABLE your_table IN EXCLUSIVE MODE;
SELECT setval('your_table_id_seq', (SELECT GREATEST(MAX(your_id), nextval('your_table_id_seq') - 1) FROM your_table));
COMMIT;

source: adapté d'une discussion du forum Ruby.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3