Aiun Geschrieben 28. August 2006 Teilen 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 ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 28. August 2006 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.