Transaction Control Language
Transaction Control Language (TCL) (Мова керування транзакціями) — це сімейство комп'ютерних мов, що використовуються в комп'ютерних програмах або користувачами баз даних для керування транзакціями.
Тепер найпопулярнішою мовою TCL є SQL, що використовується для отримання і маніпулювання даними в реляційній базі даних.
TCL у випадку з SQL включає в себе такі команди:
- Begin - служить визначенням початку транзакції;
- Commit - застосовує транзакцію;
- Rollback - відкочує всі зміни, зроблені у контексті поточної транзакції;
- Savepoint - встановлює проміжну точку збереження усередині транзакції.
Приклад у PostgreSQL
Для прикладу, у нас є таблиця Sells (shop ,sweet ,price) , яка містить інформацію про продажі.
shop | sweet | price |
---|---|---|
SolodkaMriya | Nuts | 75 |
SolodkaMriya | ChervoniyMak | 70 |
BabusinySolodoshchi | Bounty | 120 |
Tsukerki | Korivka | 105 |
Tsukerki | Nuts | 155 |
Далі виконаємо наступну транзакцію
BEGIN;
UPDATE
Sells SET shop = 'newShop' WHERE shop ='SolodkaMriya' ;
UPDATE
Sells SET sweet = 'newSweet' WHERE shop ='newShop' ;
SELECT * FROM Sells
COMMIT;
Результат виконання транзакції
shop | sweet | price |
---|---|---|
newShop | newSweet | 75 |
newShop | newSweet | 70 |
BabusinySolodoshchi | Bounty | 120 |
Tsukerki | Korivka | 105 |
Tsukerki | Nuts | 155 |
Тепер спробуємо зробити те саме, але додавши при цьому відкат транзакцій(Rollback) та точку збереження (Savepoint)
BEGIN;
UPDATE
Sells SET shop = 'newShop' WHERE shop ='SolodkaMriya' ;
SAVEPOINT my_savepoint;
UPDATE
Sells SET sweet = 'newSweet' WHERE shop ='newShop' ;
SELECT * FROM Sells;
ROLLBACK TO my_savepoint;
COMMIT;
Після цього давайте виконаємо наступну транзакцію для початкової таблиці. Транзакція відкотилась до точки збереження і в нас змінилась лише назва магазину
shop | sweet | price |
---|---|---|
newShop | Nuts | 75 |
newShop | ChervoniyMak | 70 |
BabusinySolodoshchi | Bounty | 120 |
Tsukerki | Korivka | 105 |
Tsukerki | Nuts | 155 |
Корисні Джерела
- https://www.studytonight.com/dbms/tcl-command.php
- https://www.postgresqltutorial.com/postgresql-transaction/
- https://www.geeksforgeeks.org/sql-ddl-dml-tcl-dcl/
Див. також
Це незавершена стаття про бази даних. Ви можете допомогти проєкту, виправивши або дописавши її. |