COMMIT

Aufgabe der COMMIT-Anweisung ist es, die Datenänderungen von Datenmanipulationsanweisungen (INSERT, UPDATE, DELETE?) dauerhaft in die Datenbank zu speichern. Die DDL-Anweisungen (z.B. CREATE, DROP, GRANT und REVOKE) beinhalten ein implizites COMMIT, das die Ausführung der DDL-Befehle abschließt. Nebem dem ROLLBACK ist COMMIT der zweite Befehl, mit dem eine Transaktion abgeschlossen werden kann. Die Ausführung des COMMITs impliziert neben der persistenten Speicherung der Datenmanipulationen auch immer eine Integritätsprüfung.

Der Ablauf der Ausführung des COMMIT-Befehls sieht folgendermaßen aus:

  • Integritätsprüfung: Zuerst werden die CONSTRAINTs (Integritätsbedingungen) überprüft, für die der DEFERRED-Zeitpunkt spezifiziert ist.
  • Reaktion bei konsistenten Daten: Wenn die Bedingungen aller DEFERRED-Constraints erfolgreich geprüft wurden, dann liegen im Sinne der Anwendung konsistente Datenänderungen vor und die werden persistent in der Datenbasis gespeichert.
  • Reaktion im Fehlerfall: Sobald die Bedingung eines der DEFERRED-Constraints zu falsch (FALSE) ausgewertet wird, ist ein Integritätsfehler erkannt worden, was heißt, dass die Datenänderungen inkonsistent sind bzw. zu einer inkonsistenten Datenbasis führen würden. Als Reaktion auf diese fehlerhafte Datenänderung wird die gesamte Transaktion rückgängig gemacht, sprich alle Datenmanipulationen zurückgerollt. Falls ein SAVEPOINT existiert, werden die DML-Anweisungen bis zum Savepoint zurückgerollt.

Syntax der COMMIT-Anweisung:

<COMMIT-Anweisung> ::=
          COMMIT [WORK];

[WORK] entspricht dem ANSI_SQL_Standard und kann wegfallen, ohne dass sich die Funktionalität der Anweisung ändert.

Beispiele:

    INSERT INTO Teile VALUES (123, 'Damenfahrrad abc', ...);
    INSERT INTO Mitarbeiter VALUES (67833, 'Müller', 'Anton', ...);
    -- bis zu diesem Zeitpunkt sind die neuen Daten zwar für Anfragen  und Änderungen für den Benutzer, 
    -- der die Datwen ändert, verfügbar
    -- Andere Benutzer sehen jedoch noch den alten Datenbestand von Teile und Mitarbeiter
    COMMIT;
    -- Falls die Integritätsprüfung erfolgreich ist, werden die Daten persistent gespeichert. 

siehe auch. PRAGMA-AUTONOMOUS-TRANSACTION

Quellen:

  • INCITS/ISO/IEC 9075-1-2008. Part 1 "SQL/Framework", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • INCITS/ISO/IEC 9075-1-2008. Part 2 "SQL/Foundation", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
  • Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
  • Melton, Jim/Simon, Alan R.: "SQL: 1999 - Understanding Relational Language Components", Morgan Kaufmann, San Francisco, 2001, ISBN 1558604561
  • Oracle® Database SQL Language Reference 11g Release 2 (11.2), E17118-03, August 2010, http://download.oracle.com/docs/cd/E11882_01/server.112/e17118.pdf
  • Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2

Kategorie: SQL, Transaktionen, C