PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Perché l'elemento della sequenza di Postgres aumenta anche se la creazione dell'oggetto non riesce?

Sì, questo è il comportamento previsto. Vedi documenti :

Nota che nextval è normalmente impostato come valore predefinito per una colonna di autoincremento/seriale.

Prova anche a immaginare quanto sarebbe difficile e inefficiente se nextval dovessero tornare indietro. In sostanza dovresti bloccare tutti i client su nextval fino all'elaborazione dell'intera transazione (quella che ha acquisito il blocco). In tal caso, dimentica gli inserimenti simultanei.

Tipo cosa? Il problema nel tuo caso era che qualcuno ha specificato manualmente un valore per una colonna di incremento automatico. Non dovresti mai farlo a meno che tu non sia un samurai. :)