Transakcje SQL – można wykonać rollback czy nie można
Nadchodzi taki dzień kiedy developer zaczyna wykorzystywać transakcje w SQL. Jest to bardzo użyteczne. Serio.
Jeśli nie wiesz co to jest transakcja w SQL, sprawdź pełną definicję w wikipedia. ;o) W skrócie – jest to grupa zapytań która pozwala nam grupować inne zapytania i jeśli pójdzie coś nie tak w jednym z nim możemy wycofać zmiany. Wykonać tak zwany rollback. Oczywiście grupujemy zapytania kierując się jakąś logiką.
Pierwsze o czym należy pamiętać, to fakt, że nie wszystkie wyniki zapytań mogą zostać wycofane. Poniższe grupy zapytań są najczęściej wykorzystywane.
DML – Data Manipulation Language – jak SELECT, INSERT, UPDATE, DELETE – efekty wykoniania tych instrukcji możemy wycofać.
DDL – Data Definition Language – jak CREATE, DROP, ALTER – efekty wykonania tych instrukcji nie możemy wycofać.
Informaycjnie, jest jeszcze DCL (Data Control Language) i nasz TCL (Transaction Control).
W zasadzie chcę powiedzieć, aby nigdy przenigdy nie wykorzystywać instrukcji DDL w transakcjach ;o)
Jeśli połączysz CREATE z INSERT a następnie dodasz UPDATE w jednej transakcji (zauważ CREATE jest z DDL i nie może zostać wycofany) i jeśli wykonanie UPDATE nie powiedzie się, efektów z poprzednich zapytań nie będzie można wycofać.