
Prediskutujeme rozdiel medzi príkazmi Commit a ROLLBACK v SQL pomocou porovnávacieho grafu zobrazeného nižšie.
Porovnávacia tabuľka
Základ pre porovnanie | COMMIT | ROLLBACK |
---|---|---|
základné | COMMIT validuje zmeny vykonané aktuálnou transakciou. | ROLLBACK vymaže úpravy vykonané aktuálnou transakciou. |
účinok | Po vykonaní príkazu COMMIT transakcia nemôže byť ROLLBACK. | Po vykonaní ROLLBACK databáza dosiahne svoj predchádzajúci stav, tj pred vykonaním prvého výpisu transakcie. |
výskyt | COMMIT sa vyskytuje, keď sa transakcia úspešne vykoná. | ROLLBACK sa vyskytuje, keď je transakcia prerušená uprostred vykonania. |
syntax | COMMIT; | ROLLBACK; |
Definícia COMMIT
COMMIT je príkaz SQL, ktorý signalizuje úspešné dokončenie transakcie. Kedykoľvek transakcia dokončí jeho vykonanie bez prerušenia, zmeny vykonané v databáze, transakcia sa stáva trvalou. To znamená, že databáza nemôže získať späť svoje predchádzajúce stavy, v ktorých bola pred uskutočnením prvého vyhlásenia transakcie.
Syntax príkazu COMMIT je nasledovný:
COMMIT;
Po ukončení posledného výpisu transakcie sa transakcia čiastočne zaväzuje . Ďalej, protokoly obnovy zabezpečujú, že dokonca aj zlyhanie systému, databáza neumožní vykonať úpravy trvalé. Hneď ako je táto kontrola skontrolovaná, dosiahne sa bod transakcie transakcie a nakoniec transakcia vstúpi do záväzného stavu . Akonáhle transakcia vstúpi do záväzného stavu, nemožno ju vrátiť späť a začne nová transakcia.
Definícia ROLLBACK
Rovnako ako COMMIT, ROLLBACK je tiež príkaz SQL a signalizuje, že transakcia nebola úspešne dokončená. Preto je transakcia zrušená, aby sa vrátili zmeny vykonané transakciou. Po vykonaní ROLLBACK sa nezmieňujú žiadne úpravy vykonané súčasnou transakciou.
Syntax ROLLBACK je nasledovný:
ROLLBACK;
Transakcia ROLLBACK je nevyhnutná, ak sa vyskytne chyba počas vykonávania transakcie. Chyba môže byť zlyhanie systému, výpadok napájania, chyba vo výkazoch transakcií, zlyhanie systému. V prípade výpadku prúdu alebo zlyhania systému dôjde k opätovnému opätovnému spusteniu systému ROLLBACK. ROLLBACK sa môže vyskytnúť len vtedy, keď ešte nie je spustený COMMIT.
Kľúčové rozdiely medzi COMMIT a ROLLBACK v SQL
- Hlavným rozdielom medzi príkazmi COMMIT a ROLLBACK v SQL je, že vykonanie príkazu COMMIT spôsobí, že všetky zmeny vykonané súčasnou transakciou sa stanú trvalými. Na druhej strane vykonanie funkcie ROLLBACK vymaže všetky zmeny vykonané aktuálnou transakciou.
- Po vykonaní príkazu COMMIT nemôže byť zmena uskutočnená transakciou ROLLBACK. Po vykonaní príkazu ROLLBACK však databáza dosiahne svoj predchádzajúci stav.
- Program COMMIT sa spustí pri úspešnom vykonaní výkazu transakcií. ROLLBACK sa však vykoná, keď sa transakcia nevykoná úspešne.
záver:
Aby sa zabezpečilo, že zmeny vykonané transakciou sú natrvalo uložené v databáze, použite COMMIT po úspešnom dokončení transakcie. V prípade, že transakcia čelí akejkoľvek chybe počas vykonania a následne vráti zmeny vykonané transakciou, použije sa ROLLBACK.