Tratando Erros
O tratamento de erro no InnoDB nem sempre é o mesmo que o especificado no padrão SQL. De acordo com o SQL-99, qualquer erro durante uma instrução SQL deve provocar o rollback da instrução. O InnoDB, algumas faz o rollback de apenas parte da instrução, ou de toda instrução. A seguinte lista especifica o tratamento de erro do InnoDB.
- Se você ficar sem espaço no tablespace você obterá do MariaDB o erro
'Table is full'
e o InnoDB fará o rollback da instrução. - Um deadlock de uma transação ou em caso de se esgotar o tempo de espera em uma trava o InnoDB fará um rollback de toda a transação.
- Um erro de chave duplicada faz um rollback da inserção deste registro em particular, mesmo em instruções como
INSERT INTO ... SELECT ...
. Caso você não especifique a opçãoIGNORE
em sua instrução, provavelmente isto será diferente e o InnoDB fará rollback desta instrução SQL. - Um erro de 'registro muito grande' faz um rollback da instrução SQL.
- Outros erros são geralmente detectado pela camada de código do MariaDB e fazem o rollback da instrução correspondente.