Ein doppelter Schlüsselfehler bricht die mysql-Transaktion nicht ab bzw. setzt sie nicht zurück

Bei einer mysql innodb-Transaktion würde ich erwarten, dass ein doppelter Schlüsselfehler ein Rollback verursacht. Das tut es nicht, sondern es löst einfach einen Fehler aus und fährt mit dem nächsten Befehl fort. Sobald der COMMIT-Befehl erreicht ist, wird die Transaktion festgeschrieben, ohne den Befehl, der den doppelten Schlüssel verursacht.

Ist das das erwartete Verhalten? Wenn ja, wie würde man vorgehen, um es so einzurichten, dass die Transaktion zurückgesetzt wird, anstatt festgeschrieben zu werden, wenn ein solcher Fehler auftritt?

Test Umgebung:

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;

erwartetes Ergebnis: Tabelletest ist leer

Tatsächliches Ergebnis: Tabelletest enthält einen Datensatz mit dem Wert 5

Antworten auf die Frage(2)

Ihre Antwort auf die Frage