Se si verifica un errore, PostgreSQL non esegue effettivamente il rollback della transazione. Non riesce tutte le istruzioni successive con un errore. Puoi provarlo nel client.
È necessario eseguire il rollback prima che qualsiasi istruzione possa essere eseguita correttamente.
Nel caso in cui chiudi la connessione e ne inizi una nuova, ciò ha poca importanza. Tuttavia, se mantieni la connessione ed esegui altre istruzioni che prevedi di eseguire correttamente, non funzionerà.