# JDBC: rollback() bei Exception geht nicht!?



## Natac (20. Jan 2014)

Ich habe eine einfache jdbc connection. Über diese möchte ich gerne in mehrere Tabellen (A, B) schreiben. Also habe ich ungefähr folgenden Code:

```
Connection  conn = ...//Connection erzeugen
conn.setAutoCommit(false) // Transaktion "beginnen"
try{
  Statement stmt = connection.createStatement();

  stmt.executeUpdate(<Insert Data in Table A>); //fehlerfrei
  stmt.executeUpdate(<Insert Data in Table B>); //FEHLERHAFT!
    
  conn.commit(); //Einfügen bestätigen
}
catch(Exception e){
  conn.rollback(); // Fehler -> Alles zurück
  throw e;
}
finally{
  conn.close(); // Verbindung schließen
}
```
Nehmen wir an, das einfügen der Daten in Tabelle B schlägt fehl (Ein Feld ist null, das es laut Tabelle nicht sein darf). Nun würde ich gerne den gesamten Einfüge-Vorgang rückgängig machen, da es mir nichts bringt, Daten nur in Tabelle A gespeichert zu haben, in B aber nicht. Darum das rollback() im catch-Block.

Nur leider verhält es sich nicht so. Obwohl ich die Transaktion abbreche, befinden sich Daten in Tabelle A. Füge in eine MySql-Datenbank ein, falls das von Interesse ist.

Jemand eine Idee, was hier falsch läuft!?


----------



## Natac (21. Jan 2014)

Hat sich erledigt. Der Code stimmt. Die zu Grunde liegenden Tabellen sind vom Typ "MyIsam", der keine Transaktionen unterstützt. :rtfm: :bahnhof:


----------

