el error de la clave duplicada no cancela / deshace la transacción mysql

Cuando en una transacción mysql innodb, esperaría un error de clave duplicada para causar una reversión. No lo hace, en su lugar, simplemente lanza un error y continúa con el siguiente comando. Una vez que se alcanza el comando COMMIT, la transacción se confirmará, sin la tecla duplicada que causa el comando.

Es este el comportamiento esperado? Si es así, ¿cómo se haría para configurarlo de modo que la transacción se revierta en lugar de confirmarse cuando se produce un error de este tipo?

entorno de prueba:

CREATE TABLE `test` (  
  `id` int(11) NOT NULL, 
  PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

BEGIN;
     INSERT INTO test VALUES (5);
     INSERT INTO test VALUES (5);
COMMIT;

resultado esperado: tablatest esta vacio

resultado real: tablatest contiene un registro con valor 5

Respuestas a la pregunta(2)

Su respuesta a la pregunta