Arutagem erinevust Commit ja ROLLBACK avalduste vahel SQLis allpool toodud võrdluskaardi abil.
Võrdluskaart
Võrdluse alus | COMMIT | ROLLBACK |
---|---|---|
Põhiline | COMMIT kinnitab praeguse tehinguga tehtud muudatused. | ROLLBACK kustutab praeguse tehinguga tehtud muudatused. |
Mõju | Pärast COMMITi avalduse täitmist ei saa tehing olla ROLLBACK. | Kui ROLLBACK on täidetud, jõuab andmebaas oma eelmise olekuni, st enne tehingu esimese avalduse täitmist. |
Esinemine | COMMIT toimub siis, kui tehing on edukalt sooritatud. | ROLLBACK toimub siis, kui tehing katkestatakse täitmise ajal. |
Süntaksi | COMMIT; | ROLLBACK; |
COMMITi määratlus
COMMIT on SQL-i avaldus, mis näitab tehingu edukat lõpetamist. Kui tehing lõpetatakse ilma katkestusteta, muutuvad tehingusse tehtud muudatused püsivaks. See tähendab, et andmebaas ei saa tagasi saada oma varasemaid riike, kus see oli enne esimese avalduse täitmist tehingu toimumise ajal.
COMMITi avalduse süntaks on järgmine:
COMMIT;
Kuna tehingu viimane avaldus lõpeb tehinguga osaliselt . Järgmisena tagavad taaskasutusprotokollid, et isegi süsteemi rike, ei suuda andmebaasi muuta, muutusi püsivaks. Niipea, kui see on kontrollitud, on tehingu toimepunkt jõudnud ja tehing jõuab lõpuks pühendunud riiki . Kui tehing siseneb pühendunud olekusse, ei saa seda tagasi pöörata ja algab uus tehing.
ROLLBACKi määratlus
Nagu COMMIT, on ROLLBACK ka SQL-i avaldus ja see näitab, et tehing pole edukalt lõpule viidud . Seega katkestatakse tehing tehinguga tehtud muudatuste tühistamiseks. Pärast ROLLBACKi täitmist ei säilita praeguse tehinguga tehtud muudatusi.
ROLLBACKi süntaks on järgmine:
ROLLBACK;
Tehingu ROLLBACK muutub vajalikuks, kui tehingu toimumise ajal ilmneb viga. Viga võib olla süsteemi tõrge, elektrikatkestus, vea tehingu väljavõtetes, süsteemiõnnetus. Toitekatkestuse või süsteemi krahhi korral toimub ROLLBACK, kui süsteem uuesti taaskäivitub. ROLLBACK võib toimuda ainult siis, kui COMMIT pole veel teostatud.
Peamised erinevused COMMITi ja ROLLBACKi vahel SQLis
- SQL-i COMMIT ja ROLLBACK avalduste peamine erinevus on see, et COMMIT-i avalduse täitmine muudab kõik praeguse tehingu tehtud muudatused püsivaks. Teisest küljest kustutab ROLLBACK täitmine kõik praeguse tehinguga tehtud muudatused.
- Kui COMMITi avaldus on teostanud, ei saa tehingu tehtud muudatus olla ROLLBACK. Kui aga ROLLBACKi avaldus on täidetud, jõuab andmebaas oma eelmise olekuni.
- COMMIT saab tehingute aruannete edukast täitmisest. Kuid ROLLBACK käivitatakse siis, kui tehing ei ole edukalt sooritatud.
Järeldus:
Tagamaks, et tehingu tehtud muudatused andmebaasi jäädavalt salvestatakse, kasuta COMMIT-i pärast tehingu edukat lõpetamist. Juhul, kui tehingu teostamisel tekib viga, siis tehingu tehtud muudatuste tühistamiseks kasutatakse ROLLBACK.