Hi,
wie wäre die korrekte Vorgehensweise bei Transaktionen in PHP/MySQL?
Geht das mit der alten mysql-Extension von PHP? Die mysqli-Extension dürfte heutzutage überall anzutreffen sein und hat sogar eigene Funktionen für das Transaktionshandling. Auf alle Fälle benötigst du die InnoDB-Engine für die betreffenden Tabellen.
Ja, InnoDB wird verwendet.
Muss ich dafür die Rückgabewerte der query-Funktionen abfragen, oder weiß das PHP/MySQL auch so?
Dafür? Wofür genau? Normalerweise sollte immer der Rückgabewert von Funktionen beachtet werden, wenn sie darüber bekanntgeben, dass Fehler auftraten.
das mache ich ja auch. Aber das hilft mir jetzt nicht weiter. Nochmal, wie ist Commit und Rollback zu behandeln?
Das, was in der MySQL-Doku steht ist für mich nichtssagend:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
Wie soll da zB Rollback ins Spiel gebracht werden? Muss ich also doch die Rückgabewerte pro SQL-Statement überprüfen und Rollback ausführen sobald eines davon false ist?
Markus