Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / 15БД.doc
Скачиваний:
35
Добавлен:
30.05.2020
Размер:
410.11 Кб
Скачать

4 Управління транзакціями

Під управлінням транзакціями розуміється здатність управляти різними операціями над даними, які виконуються усередині реляційної СУБД. Перш за все, мається на увазі виконання операторів INSERT, UPDATE і DELETE. Наприклад, після створення таблиці (виконання оператора CREATE TABLE ) не потрібно фіксувати результат: створення таблиці фіксується в базі даних автоматично. Так само за допомогою відміни транзакції не вдасться відновити тільки що видалену оператором DROP TABLE таблицю.

Після успішного виконання команд, укладених в тіло однієї транзакції, негайної зміни даних не відбувається. Для остаточного завершення транзакції існують так звані команди управління транзакціями, за допомогою яких можна або зберегти в базі даних всі зміни, що відбулися в ході її виконання, або повністю їх відмінити.

Існують три команди, які використовуються для управління транзакціями:

  • COMMIT – для збереження змін ;

  • ROLLBACK – для відміни змін ;

  • SAVEPOINT – для установки особливих точок повернення.

Після завершення транзакції вся інформація про проведені зміни зберігається або в спеціально виділеній оперативній пам'яті, або в тимчасовій області відкоту в самій базі даних до тих пір, поки не буде виконана одна з команд управління транзакціями. Потім всі зміни або фіксуються в базі даних, або відкидаються, а тимчасова область відкоту звільняється.

Команда COMMIT призначена для збереження в базі даних всіх змін, що відбулися в ході виконання транзакції. Вона зберігає результати всіх операцій, які мали місце після виконання останньої команди COMMIT або ROLLBACK .

Команда ROLLBACK призначена для відміни транзакцій, ще не збережених в базі даних. Вона відміняє тільки ті транзакції, які були виконані з моменту видачі останньої команди COMMIT або ROLLBACK .

Команда SAVEPOINT (точка збереження) призначена для установки в транзакції особливих крапок, куди надалі може бути проведений відкіт (при цьому відкоту всієї транзакції не відбувається). Команда має наступний вигляд:

SAVEPOINT ім’я_точки_збереження

Вона служить виключно для створення точок збереження серед операторів, призначених для зміни даних. Ім'я точки збереження в пов'язаній з нею групі транзакцій повинне бути унікальним.

Для відміни дії групи транзакцій, обмежених точками збереження, використовується команда ROLLBACK з наступним синтаксисом:

ROLLBACK TO ім’я_точки_збереження

Оскільки за допомогою команди SAVEPOINT крупне число транзакцій може бути розбито на менші і тому більш керовані групи, її вживання є одним із способів управління транзакціями.

5 Управління транзакціями в середовищі ms sql Server

5.1 Визначення транзакцій

SQL Server пропонує безліч засобів управління поведінкою транзакцій. Користувачі в основному повинні указувати тільки початок і кінець транзакції, використовуючи команди SQL або API (прикладного інтерфейсу програмування). Транзакція визначається на рівні з'єднання з базою даних і при закритті з'єднання автоматично закривається. Якщо користувач спробує встановити з'єднання знову і продовжити виконання транзакції, то це йому не вдасться. Коли транзакція починається, всі команди, виконані в з'єднанні, вважаються тілом однієї транзакції, поки не буде досягнутий її кінець.

SQL Server підтримує три види визначення транзакцій:

  • явне ;

  • автоматичне;

  • мається на увазі.

За умовчанням SQL Server працює в режимі автоматичного початку транзакцій, коли кожна команда розглядається як окрема транзакція. Якщо команда виконана успішно, то її зміни фіксуються. Якщо при виконанні команди відбулася помилка, то зроблені зміни відміняються і система повертається в первинний стан.

Коли користувачу знадобиться створити транзакцію, що включає декілька команд, він повинен явно вказати транзакцію.

Сервер працює тільки в одному з двох режимів визначення транзакцій: автоматичному або мається на увазі. Він не може знаходитися в режимі виключно явного визначення транзакцій. Цей режим працює поверх двох інших.

Для установки режиму автоматичного визначення транзакцій використовується команда:

SET IMPLICIT_TRANSACTIONS

При роботі в режимі неявного (мається на увазі) початку транзакцій SQL Server автоматично починає нову транзакцію, як тільки завершена попередня. Установка режиму визначення транзакцій, що мається на увазі, виконується за допомогою іншої команди:

SET IMPLICIT_TRANSACTIONS ON

Соседние файлы в папке лекции