Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP5] Mysql-Transaktionen in der Objektorientierung

Empfohlene Antworten

Veröffentlicht

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 ?

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 :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.