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 enthaltenCOMMIT;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;