Quando in una transazione mysql innodb, mi aspetto che un errore chiave duplicato causi un rollback. Non lo fa, ma semplicemente genera un errore e continua al prossimo comando. Una volta raggiunto il comando COMMIT, la transazione verrà eseguita, senza che la chiave duplicata causi il comando.errore chiave duplicato non annulla/rollback transazione mysql
È questo il comportamento previsto? In tal caso, in che modo procedere con l'impostazione in modo che la transazione venga annullata anziché impegnata quando si verifica un errore di questo tipo? ambiente
prova:
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;
risultato previsto: tavolo test
è vuota
risultato effettivo: tavolo test
contiene un record con valore 5
Consulta anche: http://dev.mysql.com/doc/refman/5.0/en/innodb-error-handling. html –