yo,
Das Kernproblem liegt im "wie setzte ich Transaktionen richtig ein". Aber genau da versagen bisher alle Dokus die ich gefunden habe, ein konkretes Beispiel scheint keiner auf die Reihe zu bringen. Obwohl das doch "so einfach" ist.
ein konkretes beispiel wäre zum beispiel die überweisung bei einer bank. dort muss sichergestellt werden, dass das geld nicht nur auf dem ein konto abgeht, sondern auch auf dem anderen konto landet. ansonsten würde ja geld vernichtet, bzw. im positiven falle geld erzeugt werden. das wäre eine typische anwendung von transaktionen. der auftrag an das dbms ist, führe die transaktion ganz oder gar nicht durch.
nun ist es aber so, dass man hier nicht immer aktiv eingreifen muß, sondern das dbms übernimmt für dich diese aufgabe. tritt ein fehler auf, dann rollt es die ganze transaktion zurück, auch im dem falle, wenn in dem Programm ein Commit am ende steht. wenn du also ein transaktion ausführen willst, kannst du am ende ohne einschlechtes gewissen ein commit eingeben, ja viele anweisungen an ein dbms haben sogar ein auto-commit.
rollback "per hand" eingeben macht man in aller regel dann, wenn man zum beispiel an einer konsole daten verändern will und feststellt, moment, da habe ich doch einen denkfehler gehabt. oder mit anderen worten, ein commit bedeutet, ja ich will dass diese transaktion ausgeführt wird, bzw. ein rollback heißt soviel wie, nein ich habe meine meinung geändert. und trotzdem wird das dbms die transaktion zurück-rollen, falls was schief läuft.
deswegen haben programme in aller regel programme ihr commit zu stehen. was aber noch zusätzlich geleistet werden muss ist, ob eben die transaktion sauber durchgelaufen ist oder nicht, sprich nach dem obigen beispiel die meldung, Überweisung erfolgreich durchgeführt, bzw. Überweisung gescheitert.
ich hoffe, damit ist es ein wenig klarer geworden, was rollback und commit bewirkt.
Ilja