Esse rollback ai não está sendo chamado corretamente. Se você não fez commit, nada foi persistido. Observe que vc executa o primeiro statement sem commit e quando executar o segundo statement, vem a excessão, ou seja, não houve commit em momento algum. Não vejo que é possível realizar um rollback em algo que não foi "comitado".