Não, as transações não são revertidas assim que ocorre um erro. Mas você pode estar usando um aplicativo cliente que aplica essa política.
Por exemplo, se você estiver usando o cliente de linha de comando mysql, ele normalmente parará de executar quando ocorrer um erro e será encerrado. Sair enquanto uma transação está em andamento faz com que ela seja revertida.
Ao escrever seu próprio aplicativo, você pode controlar a política de reversão, mas há algumas exceções:
- Sair (ou seja, desconectar-se do banco de dados) sempre reverte uma transação em andamento
- Um impasse ou tempo limite de espera de bloqueio causa implicitamente uma reversão
Fora essas condições, se você invocar um comando que gera um erro, o erro é retornado normalmente e você pode fazer o que quiser, inclusive confirmar a transação de qualquer maneira.