COMMIT (SQL)
COMMIT (англ. — «здійснювати») — оператор управління мови SQL для успішного завершення транзакції. При виконанні оператора зміни, зроблені від початку транзакції й раніше невидимі для інших транзакцій, фіксуються в базі даних[1].
Для скасування змін транзакції застосовується оператор ROLLBACK. Ці дві інструкції явним чином завершують транзакцію[2].
Oracle
Перед виконанням COMMIT Oracle генерує логи даних скасування (undo) і повторного виконання (redo) (вони можуть бути навіть записані на диск). При виконанні оператора COMMIT таблиці транзакцій redo-записів відзначаються SCN (англ. system change number, «номер зміни системи»), буфери redo-журналу скидаються на диск (на цьому етапі транзакція вважається завершеною), звільняються блокування, а транзакція позначається як завершена[1].
Зауваження щодо використання
Команда COMMIT в обробці транзакцій представляє той момент часу, коли користувач вже вніс необхідні зміни як одну логічну одиницю, а оскільки помилок не сталося, він готовий до збереження результатів своєї роботи. Видачею команди COMMIT в базі даних ще й неявно закривається поточна транзакція та розпочинається нова.
Відкат транзакції виконується не тільки в результаті видачі команди ROLLBACK, а й неявно, коли виконання оператора по тій або іншій причині закінчується невдало або коли користувач скасовує оператор командою CTRL-C.
Рекомендується явно завершувати транзакції в прикладних програмах, використовуючи команди COMMIT WORK (або ROLLBACK WORK). Якщо ви явно не записали транзакцію, а прикладна програма завершилася аварійно, відбудеться відкат останньої не записаної транзакції.
Приклад
Для додавання рядків до таблиці MyTable і збереження зміни введіть наступні команди:
BEGIN TRANSACTION WORK;
INSERT INTO MyTable VALUES ('50', 'some string');
COMMIT WORK;
Примітки
Література
- Джеймс Р. Грофф & Пол Н. Вайнберг & Эндрю Дж. Оппель. Глава 12. Обработка транзакций. § Инструкции COMMIT и ROLLBACK // SQL. Полное руководство = SQL The Complete Reference. — Третье издание. — Вильямс, 2015. — С. 337-339. — 959 с. — (Полный справочник). — ISBN 9785845916549.
- Кевин Е. Кляйн, Дэниэл Кляйн, Брэнд Хант. COMMIT // SQL: справочник = SQL In A Nutshell. A Desktop Quick Reference. — 3-е изд.. — Символ, 2010. — С. 86-89. — 653 с. — ISBN 9785932861653.
- Gunderloy, M.; Jorden, J.L.; Tschanz, D.W. Mastering Microsoft SQL Server 2005. — Wiley, 2006. — P. 200-201. — ISBN 9780471792239.
- Darie, C. and Watson, K. The Programmer's Guide to SQL. — Apress, 2008. — P. 271-274. — ISBN 9781430208006.
- Alapati, S. Expert Oracle Database 11g Administration. — Apress, 2009. — P. 338-339. — ISBN 9781430210160.