Ich starte eine Transaktion.
wie?
Meiner Ansicht nach ist das nicht relevant - aber wenn es dir hilft mittels php pdo transaction.
Dann speichere ich einen neuen Datensatz in die Datenbank.
wie?
Meiner Ansicht nach ist das nicht relevant - aber wenn es dir hilft mittels php pdo exec.
Jetzt lasse ich mir die Id des Datensatzes zurück geben.
was bedeutet "jetzt"? Hier ist doch schon viel Zeit vergangen
Meiner Ansicht nach ist das nicht relevant - aber wenn es dir hilft es ist sehr kurz.
Mit der Id mache ich noch weitere Sachen.
ist sie hübsch? *scnr*
Meiner Ansicht nach ist das nicht relevant - aber wenn es dir hilft hübscher als du.
Jetzt mache ich einen Commit.
Du veranlasst einen Commit, aber wie das Ganze ablaufen soll, weiß bisher nur die NSA?
Was soll wie ablaufen? Transaction starten und mittels commit abschliessen. Gibt es da so viele unterschiedliche verfahren?
Nun meine Fragen:
Welches DBMS
MySQL 5.irgendwas.
Wie findet der Zugriff statt? -> Protokoll!
http
Welche weiteren Randbedingungen müssen beachtet werden?
Keine Ahnung?
* mehrere gleichzeitige User auf der Datenbank?
Nein
* hoher Datenbank-Traffic?
Das Spielt denke ich keine Rolle, da selbst 2 Verarbeitungen im Monat sich in die Quere kommen könnten. Die Chancen sind zwar nicht besonders groß aber theoretisch möglich.
* viele Veränderungen pro Zeiteinheit?
Meiner Ansicht nach ist das nicht relevant - aber wenn es dir hilft aktuell so gut wie gar nichts.
Transaktionen sind üblicherweise nur in zustandsorientierten Systemen bei verbindungsorientierten Protokollen sinnvoll- Liegen diese Voraussetzungen bei Dir vor, oder erstrecken sich die Aktionen vielleicht über mehrere Roundturns einer HTTP/s-Sitzung?
Also meine Frage ist natürlich durch ein aktuelles Projekt / Problem geboren. Dennoch hoffe ich dass man eine generelle Antwort treffen kann. Was ich nicht möchte ist, dass bei script a.php eine transaktion gestartet wird und bei b.php wird sie beendet. Es spielt sich alles innerhalb eines Scriptaufrufes ab. Um genau zu sein werden zwei aufeinander aufbauende Datensätze erstellt. Da der eine ohne den anderen nicht sinnvoll ist wollte ich um das Ganze Speichern eine Transaktion bauen und sie nur commiten wenn beide Speichervorgänge erfolgreich sind. Da der eine Datensatz die Id des anderen beinhaltet frage ich doch mal lieber wie sicher die Id ist. Eventuell ändert sich die Id ja, nach dem commit. Dann wäre die Referenz zerstört.
Mit antwortendem Gruß
T-Rex