Aiun Geschrieben 28. August 2006 Geschrieben 28. August 2006 hu, folgendes Problem: ich habe einige Klassen die sich um Datenbank- und Dateisystem kümmern. Da kann es vorkommen das: Klasse 1 methode "delete": ->Transaktion Start ->select * from sub where parent_id=1 ->->Klasse2->delete(sub_id); ->delete from parent where parent_id=1 ->transaktion commit class Klasse2 methode "delete" ->transaktion start -> datei(en) löschen ->delete from sub where sub_id=$subid ->transaktion commit ich hoffe das ist verständlich das Problem: ich habe jetzt -> Transaktion start -> select... ->-> transaktion start ->-> delete... ->-> transaktion commit // dies evtl. mehrfach -> delete ... -> transaktion commit also commited er die Transaktion zu früh, weil da ein commit zwischen kommt, oder irre ich ? Alle SQL-Befehle laufen vorher nochmal durch eine Zentrale mysql-Klasse. Die überlegung ist, dort mitzuschneiden, wieviele transaktionen gestartet werden, und die entsprechende Anzahl von Commits zu ignorieren..... aber ist das sinnvoll ? Edit: das Problem: wie halte ich fest, welches Commit zu welchem start gehört. Nicht das ich im Fehlerfall ein Commit zu viel ignoriere. was denkt ihr / alternative ?
Aiun Geschrieben 28. August 2006 Autor Geschrieben 28. August 2006 hab das jetzt so gemacht, das Mysql-Statements an die transaktion gegeben werden, Commit werden anschließend nur akzeptiert, wenn sie von dem gleichen transaktions-Objekt kommen wie das Start. Rollbacks kann jedes Transaktionsobjekt abliefern, aber es wird auch automatisch mit dem rollback eine exception geschmissen
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden