Ankündigung

Einklappen
Keine Ankündigung bisher.

Autocommit-Verhalten bei rollback bzw. commit

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Autocommit-Verhalten bei rollback bzw. commit

    Hallo,

    ich steuere meine Datenbank mit einem ODBC-Treiber an. Hier wird es möglich, dass autocommit-Verhalten für Querys mittels odbc-Funktionen auszuschalten. Das bedeutet, man kann eine gestartete Transaktion mit Hilfe von odbc_rollback(); oder odbc_commit(); steuern. Tritt ein Fehler bei einem INSERT oder einem DELETE auf, macht man einen rollback und die Datenbank ist wieder im Ausgangszustand.

    In meiner Datenbankklasse möchte ich nun einen spezielle Fehlerbehandlung für diesen Umstand entwickeln. Angenommen alle (meinetwegen 5) Querys einer Transaktion wurden ausgeführt bis auf den letzten, es tritt ein Fehler auf und ich versuche einen rollback:
    PHP-Code:
    <?php
    if(!@odbc_rollback($this->connect_id))
        echo 
    "Fehler beim Zurücksetzen der Datenbank, die Datenbank ist möglicherweise unbrauchbar";
    ?>
    Meine Fragen dazu:
    Wie verhält sich die Datenbank jetzt? Es wurden Daten geändert, aber es hat weder ein rollback noch ein commit stattgefunden. Die Daten sind zwar in der Datenbank, aber wozu brauche ich die commit-Funktion dann eigentlich, wenn sowieso alles bereits in der Datenbank steht?



    Gleiche Vorraussetzungen, alle Querys haben geklappt. Die Datenbank ist also korrekt. Jetzt muss nur noch der commit folgen.
    Was ist, wenn der commit fehlschlägt? Die Datenbank hält die Daten trotzdem.
    Werden die erst nach einiger Zeit gelöscht? oder nach Beenden der Verbindung?
    Tutorials zum Thema Technik:
    https://pilabor.com
    https://www.fynder.de
Lädt...
X