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, Інтернет
U Vikipediyi ye statti pro inshi znachennya cogo termina Vidkat ROLLBACK vidkat operator movi SQL yakij ye protilezhnistyu do operatora COMMIT Vin skasovuye zmini vneseni pid chas potochnoyi yavnoyi chi neyavnoyi tranzakciyi do pochatku tranzakciyi abo tochki zberezhennya angl savepoint Vidkochuvannya vazhlivi dlya zberezhennya cilisnosti bazi danih bo voni ye zasobom zastosuvannya yakogo dozvolyaye povernuti bazu danih do poperednogo stanu navit pislya vnesennya pomilkovih redaguvan Takozh voni kritichni dlya vidnovlennya pislya padin servera bazi danih baza danih povertayetsya v uzgodzhenij stan shlyahom vidkochennya bud yakoyi tranzakciyi yaka bula aktivnoyu na moment padinnya PrikladiMicrosoft SQL Server USE tempdb GO CREATE TABLE TestTransactionTable value int GO DECLARE TName varchar 20 T 1 Nastupnij viraz pochinaye imenovanu tranzakciyu vstavlyaye dva ryadki i todi vidkochuyetsya im ya tranzakciyi zadayetsya cherez zminnu TName Inshij viraz poza mezhami imenovanoyi tranzakciyi vstavlyaye dva ryadki Zapit vivodit rezultat poperednih viraziv 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 virazi savepoint savepoint name 1 DML virazi savepoint savepoint name 2 DML virazi savepoint savepoint name n DML virazi rollback to savepoint savepoint name nKaskadnij vidkitKaskadnij vidkit angl cascading rollback traplyayetsya v sistemah baz danih koli tranzakciya T1 sprichinyaye pomilku i treba vidkotiti zmini Cherez nevdachu T1 inshi tranzakciyi zalezhni vid yiyi dij takozh treba vidkotiti Tobto nevdacha odniyeyi tranzakciyi viklikaye vidkit bagatoh Praktichni pidhodi do vidnovlennya baz danih garantuyut bezkaskadnij vidkit otzhe kaskadni vidkoti ne ye bazhanim rezultatom T T1 T2 prochitati A prochitati B zapisati A prochitati A zapisati A prochitati A Yaksho T zaznaye nevdachi ce prizvodit do vidkochuvannya T1 i T2 Ce priklad kaskadnogo vidkotu PosilannyaROLLBACK TRANSACTION Transact SQL 1 veresnya 2012 u Wayback Machine angl Vikonannya SQL operacij z PL SQL Vikoristannya ROLLBACK 25 travnya 2012 u Wayback Machine angl Div takozhMigraciya bazi danih Tochka zberezhennya Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi