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.
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