Transaction Control Language (TCL) (Мова керування транзакціями) — це сімейство комп'ютерних мов, що використовуються в комп'ютерних програмах або користувачами баз даних для керування транзакціями.
Тепер найпопулярнішою мовою TCL є SQL, що використовується для отримання і маніпулювання даними в реляційній базі даних.
TCL у випадку з SQL включає в себе такі команди:
Приклад у 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 [Архівовано 28 грудня 2021 у Wayback Machine.]
- https://www.postgresqltutorial.com/postgresql-transaction/ [Архівовано 20 січня 2022 у Wayback Machine.]
- https://www.geeksforgeeks.org/sql-ddl-dml-tcl-dcl/ [Архівовано 28 грудня 2021 у Wayback Machine.]