Що таке транзакція в базі даних

Транзакція в базі даних - це набір змін в базі даних, який повинен бути виконаний в цілому. Простішими словами, це команда або блок команд (типу INSERT, UPDATE і т.д.), які застосовуються разом по принципу все-або-нічого.

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

Операція Commit записує зміни, зроблені після початку транзакції, в базу даних, а операція Rollback відміняє ці зміни.

Зауваження

Транзакції можуть проходити по-різному в різних базах даних. Є бази даних даних, де лише операції маніпуляції даними можуть використовуватися у транзакціях, а інші операції (зміна структури, надання привілеїв і т.д.) застосовуються поза конктекстом транзакцій. Є бази даних, де транзакції не підтримуються взагалі. З цього приводу читайте документацію вашої СKБД.

Робота з транзакціями

В Database Tour контроль транзакцій залежить від опції авто-commit:

Якщо опція авто-commit ввімкнена, то для кожної команди в базі даних буде відбуватися автоматичний commit, a rollback буде неможливий. Але і в цьому режимі ви можете керувати транзакціями вручну за допомого меню База даних | Транзакції або кнопок Почати транзакцію, Commit та Rollback. Якщо ви почали транзакцію вручну, авто-commit вимикається і для транзакції потрібно вручну робити commit або rollback. Після commit або rollback опція авто-commit вмикається знову.

Якщо опція авто-commit вимкнена (по замовчанню), програма сама неявно розпочинає транзакцію в разі потреби. Після запуску транзакції копки Commit та Rollback загоряються і потрібно вручну робити commit або rollback.

Зауваження

Ізоляція транзакцій

Якщо відкрито базу даних і ще не запущено транзакцію, ви можете вибрати рівень ізоляції транзакцій (меню База | Ізоляція транзакцій), який встановлює правила відображення даних при роботі кількох клієнтів з однією БД:

На додачу до цих рівнів ізоляції, в підключеннях ADO можуть використовуватися також наступні:

Не всі рівні ізоляції транзакцій доступні для різних типів БД - напр., для локальних БД, відкритих через BDE, можна встановити тільки 1 рівень: незафіксовані зміни.