PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Pourquoi l'élément de séquence Postgres monte-t-il même si la création d'objet échoue ?

Oui, c'est le comportement attendu. Voir la documentation :

Notez que nextval est normalement défini comme valeur par défaut pour une colonne d'auto-incrémentation/série.

Essayez également d'imaginer à quel point ce serait difficile et inefficace si nextval devaient revenir en arrière. Essentiellement, vous devrez verrouiller chaque client sur nextval jusqu'à ce que toute la transaction (celle qui a acquis le verrou) soit traitée. Dans ce cas, oubliez les insertions simultanées.

Comme quoi? Le problème dans votre cas était que quelqu'un avait spécifié manuellement une valeur pour une colonne d'auto-incrémentation. Vous ne devriez jamais faire cela, sauf si vous êtes un samouraï. :)