• Mit COMMIT oder ROLLBACK wird eine Transaktion beendet.
    • COMMIT persistiert die Änderungen
    • ROLLBACK setzt die Tabelle zurück
  • Solange man noch nicht commit abgeschickt hat, kann man mit rollback zurück
  • Andere Verbindungen sehen den neuen State der Tabelle erst, wenn der ändernde Befehl committed wurde und wenn die eigene Transaktion auch erst ausgeführt wurde.
-- CONNECTION 1 --
INSERT INTO namen VALUES ("Peter");
 
-- CONNECTION 2 --
SELECT * FROM namen; -- Peter ist noch nicht enthalten
 
-- CONNECTION 1 --
COMMIT; -- Die Änderungen werden persistiert
 
-- CONNECTION 3 --
SELECT * FROM namen; -- Hier ist Peter enthalten
 
-- CONNECTION 2 --
SELECT * FROM namen; -- Peter ist immer noch nicht enthalten
 
COMMIT;
SELECT * FROM namen; -- Jetzt ist auch hier Peter enthalten
  • In DBeaver ist Autocommit an, d.h. nach jeder SQL-Anfrage wird COMMIT mitgesendet.

Beispiel

INSERT INTO hersteller VALUES ('Dogdog', 'England');
 
-- Würde der SQL-Befehl aus irgend einem Grund fehlschlagen:
INSERT INTO produkte VALUES (129, 'Hundefutter', 8.95, 'Dogdog'); 
-- so könnte man alle Änderungen der Transaktion 
-- (hersteller und produkte Insert) zurücksetzen:
ROLLBACK;