ROLLBACK (відкат) — оператор мови SQL, який є протилежністю до оператора COMMIT. Він скасовує зміни внесені під час поточної явної чи неявної транзакції до початку транзакції або (англ. savepoint). Відкочування важливі для збереження цілісності бази даних, бо вони є засобом застосування якого дозволяє повернути базу даних до попереднього стану, навіть після внесення помилкових редагувань. Також вони критичні для відновлення після падінь сервера бази даних; база даних повертається в узгоджений стан шляхом відкочення будь-якої транзакції, яка була активною на момент падіння.
Приклади
Microsoft SQL Server
USE tempdb; GO CREATE TABLE TestTransactionTable ([value] int;) GO DECLARE @TName varchar(20) = 'T_1'; --Наступний вираз починає іменовану транзакцію, --вставляє два рядки і тоді відкочується --ім'я транзакції задається через змінну @TName. --Інший вираз поза межами іменованої транзакції вставляє два рядки. --Запит виводить результат попередніх виразів. BEGIN TRAN @TName INSERT INTO TestTransactionTable VALUES(1), (2); ROLLBACK TRAN @TName; INSERT INTO TestTransactionTable VALUES(3),(4); SELECT [value] FROM TestTransactionTable; DROP TABLE TestTransactionTable; --Results --value ------------- --3 --4
Oracle
-- DML вирази savepoint savepoint_name_1; -- DML вирази savepoint savepoint_name_2; -- DML вирази ... savepoint savepoint_name_n; -- DML вирази rollback to savepoint savepoint_name_n
Каскадний відкіт
Каскадний відкіт (англ. cascading rollback) трапляється в системах баз даних коли транзакція (T1) спричиняє помилку і треба відкотити зміни. Через невдачу T1, інші транзакції залежні від її дій, також треба відкотити. Тобто невдача однієї транзакції викликає відкіт багатьох.
Практичні підходи до відновлення баз даних гарантують безкаскадний відкіт, отже каскадні відкоти не є бажаним результатом.
T | T1 | T2 |
---|---|---|
прочитати (A) | ||
прочитати (B) | ||
записати (A) | ||
прочитати (A) | ||
записати (A) | ||
прочитати (A) |
Якщо Т зазнає невдачі це призводить до відкочування T1 і T2. Це приклад каскадного відкоту.
Посилання
- ROLLBACK TRANSACTION (Transact-SQL) [ 1 вересня 2012 у Wayback Machine.] (англ.)
- Виконання SQL операцій з PL/SQL. Використання ROLLBACK [ 25 травня 2012 у Wayback Machine.] (англ.)
Див. також
![]() | Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет