COMMIT (англ. — «здійснювати») — оператор управління мови SQL для успішного завершення транзакції. При виконанні оператора зміни, зроблені від початку транзакції й раніше невидимі для інших транзакцій, фіксуються в базі даних[1].
Для скасування змін транзакції застосовується оператор ROLLBACK. Ці дві інструкції явним чином завершують транзакцію[2].
Перед виконанням 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;