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
MySQL 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ção IGNORE
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 MySQL e fazem o rollback da instrução correspondente.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.