logo

ТРАНЗАКЦІЇ SQL

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

Приклад транзакції для переказу 150 доларів США з рахунку A на рахунок B:

1. read(A) 2. A:= A – 150 3. write(A) 4. read(B) 5. B:= B + 150 6. write(B)>

Невиконані кроки призводять до збою транзакції. Транзакція бази даних, за визначенням, має бути атомарною, послідовною, ізольованою та довговічною.
Вони широко відомі як КИСЛОТА властивості. Ці властивості можуть забезпечити безконфліктне одночасне виконання кількох транзакцій.



Властивості транзакції

  • Атомарність: Результат транзакції може бути як повністю успішним, так і повністю невдалим. Усю транзакцію потрібно відкотити, якщо одна її частина виходить з ладу.
  • Консистенція: Транзакції зберігають обмеження цілісності шляхом переміщення бази даних з одного дійсного стану в інший.
  • Ізоляція: Одночасні транзакції ізольовані одна від одної, що забезпечує точність даних.
  • Довговічність: Після здійснення транзакції її зміни залишаються в силі навіть у разі збою системи.

Як реалізувати команду керування транзакціями за допомогою SQL?

Наступні команди використовуються для керування транзакціями. Важливо зазначити, що ці оператори не можна використовувати під час створення таблиць і використовуються лише з командами DML, такими як- ВСТАВИТИ , ОНОВЛЕННЯ , і ВИДАЛИТИ .

Команда ПОЧАТИ ТРАНЗАКЦІЮ

Він вказує на початкову точку явної або локальної транзакції.

Синтаксис:

ПОЧАТИ ТРАНЗАКЦІЮ назва_транзакції;

Команда SET TRANSACTION

Значення для властивостей поточної транзакції, таких як рівень ізоляції транзакції та режим доступу, встановлюються за допомогою оператора SET TRANSACTION у MySQL.

Синтаксис:

hashmap java

ВСТАНОВИТИ ТРАНЗАКЦІЮ [ ЧИТАТИ ЗАПИСАТИ | ЛИШЕ ДЛЯ ЧИТАННЯ ];

Команда COMMIT

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

Синтаксис:

COMMIT;

приклад:

Зразок таблиці 1

вихід

вихід

конструктор на java

Нижче наведено приклад, у якому можна видалити ті записи з таблиці, які мають вік = 20, а потім COMMIT зміни в базі даних.

Запит

DELETE FROM Student WHERE AGE = 20; COMMIT;>

Вихід

Таким чином, два рядки з таблиці будуть видалені, а оператор SELECT матиме такий вигляд:

вихід

вихід

Команда ROLLBACK

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

Синтаксис команди ROLLBACK:

ВІДКОТ;

приклад:

З наведеного вище прикладу Зразок таблиці 1 ,
Видаліть із таблиці ті записи, які мають вік = 20, а потім відкотіть зміни в базі даних.

Запит

DELETE FROM Student WHERE AGE = 20; ROLLBACK;>

Вихід

вихід

вихід

Команда SAVEPOINT

ТОЧКА ЗБЕРЕЖЕННЯ створює точки в групах транзакцій, у яких виконується ВІДКОТ.
ТОЧКА ЗБЕРЕЖЕННЯ — це точка в транзакції, в якій можна відкотити транзакцію до певної точки без відкоту всієї транзакції.

Синтаксис для команди Savepoint:

SAVEPOINT SAVEPOINT_NAME;

Ця команда використовується лише для створення SAVEPOINT серед усіх транзакцій.
Загалом ROLLBACK використовується для скасування групи транзакцій.

метод перемикання java

Синтаксис для повернення до команди Savepoint:

ВІДКОТИТИСЯ ДО SAVEPOINT_NAME;

ви можете в будь-який час відкотити до будь-якої ТОЧКИ ЗБЕРЕЖЕННЯ, щоб повернути відповідні дані до початкового стану.

приклад:

З наведеного вище прикладу Зразок таблиці 1 , Видаліть ті записи з таблиці, які мають вік = 20, а потім відкотіть зміни в базі даних, зберігаючи точки збереження.

Запит

SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.>

Тут SP1 – це перша ТОЧКА ЗБЕРЕЖЕННЯ, створена перед видаленням. У цьому прикладі відбулося одне видалення.
Після видалення знову створюється SAVEPOINT SP2.

Вихід

вихід

вихід

Видалення відбулося, припустімо, що ви передумали та вирішили ВІДКОТИТИСЯ до ТОЧКИ ЗБЕРЕЖЕННЯ, яку ви визначили як SP1, яка перед видаленням.
видалення скасовується цим оператором.

Запит

ROLLBACK TO SP1; //Rollback completed>

Вихід

вихід

вихід

Команда RELEASE SAVEPOINT

Ця команда використовується для видалення ТОЧКИ ЗБЕРІГАННЯ, яку ви створили.

Синтаксис:

linux редагувати файл

ВІДПУСТИТИ ТОЧКУ ЗБЕРЕЖЕННЯ SAVEPOINT_NAME

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

Висновок

  • Оператори SQL групуються разом за допомогою транзакцій.
  • Обіцяють, що або всі зміни будуть зроблені, або жодних.
  • Надійність забезпечується такими якостями ACID, як атомарність, консистенція, ізоляція та довговічність.
  • Почніть транзакцію за допомогою BEGIN TRANSACTION і завершіть її за допомогою COMMIT або ROLLBACK, щоб завершити або скасувати зміни.