En una transacción mysql innodb, esperaría que un error duplicado de clave cause una reversión. No lo hace, en su lugar, simplemente arroja un error y continúa al siguiente comando. Una vez que se llega al comando COMMIT, la transacción se confirmará, sin el comando que causa la clave duplicada.error duplicado de clave no cancela/revoca la transacción mysql
¿Es este el comportamiento esperado? En caso afirmativo, ¿cómo se podría configurar para que la transacción se retrotraiga en lugar de confirmarse cuando se produce dicho error? ambiente
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: mesa test
está vacía
resultado real: mesa test
contiene un registro con un valor de 5
Consulte también: http://dev.mysql.com/doc/refman/5.0/en/innodb-error-handling. html –