Розглянемо різницю між операторами Commit і ROLLBACK в SQL за допомогою діаграми порівняння, показаної нижче.
Діаграма порівняння
Основа для порівняння | COMMIT | ROLLBACK |
---|---|---|
Основний | COMMIT перевіряє зміни, внесені поточною транзакцією. | ROLLBACK стирає зміни, внесені поточною транзакцією. |
Ефект | Після виконання оператора COMMIT транзакція не може бути ROLLBACK. | Після того, як ROLLBACK виконується, база даних досягає свого попереднього стану, тобто до виконання першої операції транзакції. |
Виникнення | COMMIT відбувається, коли транзакція успішно виконується. | ROLLBACK відбувається, коли транзакція перервана в середині виконання. |
Синтаксис | COMMIT; | ROLLBACK; |
Визначення COMMIT
COMMIT - це оператор SQL, який сигналізує про успішне завершення транзакції. Всякий раз, коли транзакція завершує своє виконання без будь-якого переривання, зміни, внесені до бази даних, транзакцією стають постійними. Це означає, що база даних не може відновити свої попередні стани, в яких вона була, до виконання першої заяви, транзакції.
Синтаксис оператора COMMIT такий:
COMMIT;
Оскільки остання операція транзакції завершується, транзакція стає частково скоєною . Далі, протоколи відновлення гарантують, що навіть збій системи не вдасться створити базу даних, щоб зробити модифікації постійними. Як тільки це буде перевірено, точка фіксації транзакції досягла і, нарешті, транзакція входить у стан скоєння . Після того, як транзакція вступить у стан скоєння, вона не може бути повернута назад, і починається нова транзакція.
Визначення ROLLBACK
Подібно COMMIT, ROLLBACK також є оператором SQL, і він сигналізує, що транзакція не була успішно завершена. Отже, транзакція припиняється, щоб скасувати зміни, здійснені транзакцією. Після виконання ROLLBACK ніяких модифікацій, зроблених поточною транзакцією, не зберігається.
Синтаксис ROLLBACK є наступним:
ROLLBACK;
Транзакція ROLLBACK стає необхідною, якщо виникає помилка під час виконання транзакції. Помилка може бути відмовою системи, відключенням електроживлення, помилкою в операціях транзакцій, аварією системи. У разі виходу з ладу або збою системи ROLLBACK відбувається, коли система знову запускається. ROLLBACK може відбуватися, лише якщо COMMIT ще не виконано.
Ключові відмінності між COMMIT і ROLLBACK в SQL
- Основна відмінність операторів COMMIT і ROLLBACK від SQL полягає в тому, що виконання оператора COMMIT робить всі зміни, зроблені поточною транзакцією, постійними. З іншого боку, виконання ROLLBACK стирає всі модифікації, зроблені поточною транзакцією.
- Після того, як оператор COMMIT виконав модифікацію, зроблену транзакцією, не може бути ROLLBACK. Однак після виконання оператора ROLLBACK база даних досягає свого попереднього стану.
- COMMIT виконується після успішного виконання операцій транзакції. Однак ROLLBACK виконується, коли транзакція не виконується успішно.
Висновок:
Щоб переконатися, що зміни, внесені транзакцією, постійно зберігаються в базі даних, використовуйте COMMIT після успішного завершення транзакції. У випадку, якщо транзакція стикається з будь-якою помилкою під час виконання, то для скасування змін, здійснених транзакцією, використовується ROLLBACK.