Лекція 7. Транзакції
| Сайт: | Навчально-інформаційний портал НУБіП України |
| Курс: | Організація баз даних (КН+ІПЗ). Ч2☑️ |
| Книга: | Лекція 7. Транзакції |
| Надруковано: | Гість-користувач |
| Дата: | середа, 11 березня 2026, 04:29 |
1. Визначення та властивості транзакції
Транзакція – це сукупність дій, які виконуються по відношенню до БД та розглядаються як єдине ціле. Транзакції – це одиниці активності або, інакше кажучи, послідовність дій, що виконуються за певним логічним порядком. Вони можуть виконуватися як вручну, так і автоматично за допомогою спеціальних програм. В реляційних БД транзакції здійснюються за допомогою, так званих, команд DML – INSERT, UPDATE, DELETE.
Транзакція може бути представлена як одним оператором DML, так і групою таких операторів.
Підсумовуючи вище зазначене, наголос необхідно зробити на таких речах.
- Кожна транзакція має свій початок і своє завершення.
- Будь-яку транзакцію можна або зберегти, або відмінити.
- Якщо у будь-якому місці виконання транзакції один з операторів не може бути виконаний, вся транзакція є неуспішною і не може бути збережена у БД.
Управління транзакціями
Якщо певна транзакція успішно завершилась, відповідна таблиця не змінюється миттєво. Для успішно завершених транзакцій передбачені команді управління транзакціями, які дозволяють або зберегти в БД всі зміни, або відмінити їх. Після завершення транзакції відповідна інформація зберігається в спеціальній області бази даних. Всі відповідні зміни будуть зберігатися в цій області бази даних, доки для них не буде реалізована відповідна команда управління транзакцією. За результатами реалізації такої команди відповідні зміни або вносяться до БД, або відміняються, після чого область для тимчасового збереження даних звільняється.
Для фіксації нової транзакції використовується спеціальна команда (тільки в середовищі MS SQL SERVER).
Команда BEGIN TRAN. Призначення цього оператора – визначення початку чергової транзакції. Синтаксис цієї команди такий.
BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable
[ WITH MARK [ 'description' ] ] ]
Фіксація транзакції, що створюється командою BEGIN TRAN, забезпечує реалізацію всіх змін, що визначаються операторами, які записані після цієї команди. Відміна транзакції, що створюється командою BEGIN TRAN, призведе до відміни усіх дій, і БД повертається у той стан, який вона мала до виконання цієї команди.
Команда COMMIT. Ця команда використовується для передачі у базу даних змін, які реалізуються транзакцією. Команда COMMIT зберігає всі транзакції, які виконані з моменту попередньої реалізації або команди COMMIT, або команди ROLLBACK. Для MS SQL SERVER команда COMMIT зберігає транзакцію, початок якої визначається командою BEGIN TRAN. З моменту виконання команди COMMIT транзакція, для якої має відношення ця команда, переходить у категорію тривких. Іншими словами, всі результати виконання транзакції стають постійними і зберігаються навіть після аварійного завершення роботи системи.
Синтаксис команди такий.
COMMIT [ WORK ]
або (для MS SQL SERVER)
COMMIT [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] ].
2. Приклади
Приклади.
1.Одна транзакція
BEGIN TRANSACTION
USE pubs
GO
UPDATE titles
SET advance = advance * 1.25
WHERE ytd_sales > 8000
GO
COMMIT
GO
2. Вкладені транзакції
CREATE TABLE TestTran (Cola INT PRIMARY KEY, Colb CHAR(3))
GO
BEGIN TRANSACTION OuterTran -- @@TRANCOUNT set to 1.
GO
INSERT INTO TestTran VALUES (1, 'aaa')
GO
BEGIN TRANSACTION Inner1 -- @@TRANCOUNT set to 2.
GO
INSERT INTO TestTran VALUES (2, 'bbb')
GO
BEGIN TRANSACTION Inner2 -- @@TRANCOUNT set to 3.
GO
INSERT INTO TestTran VALUES (3, 'ccc')
GO
COMMIT TRANSACTION Inner2 -- Decrements @@TRANCOUNT to 2.
-- Nothing committed.
GO
COMMIT TRANSACTION Inner1 -- Decrements @@TRANCOUNT to 1.
-- Nothing committed.
GO
COMMIT TRANSACTION OuterTran -- Decrements @@TRANCOUNT to 0.
-- Commits outer transaction OuterTran.
GO
3. Команда ROLLBACK
Ця команда використовується для відміни транзакції, яка ще не була збережена у БД командою COMMIT. Синтаксис такий.
ROLLBACK [ WORK ]
або (для MS SQL SERVER)
ROLLBACK [ TRAN [ SACTION ]
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ] ].
4. Команда SAVE TRAN (SAVEPOINT)
Проміжне збереження результатів транзакції за допомогою цієї команди – це створення точки збереження, який привласнюється ім’я. Після створення точка збереження може бути використана для ідентифікації місця, до якого відбувається повернення до попереднього стану. Синтаксис цієї команди такий.
SAVEPOINT savepoint_name
або (для MS SQL SERVER)
SAVE TRAN [ SACTION ] { savepoint_name | @savepoint_variable }.
Після використання точок збереження командою ROLLBACK TRAN відповідні точки видаляються.
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу