Документація Database Tour Зміст Індекс

Транзакції

Початок Попередній Наступний

Транзакція (в її спрощеному розумінні) - це набір змін в даних, який повинен бути виконаний в цілому. Commit записує зміни, зроблені після початку транзакції, в базу даних, а rollback відміняє ці зміни.

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

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

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

Зауваження

1. Виконання транзакцій та їх завершення для різних типів баз даних можуть проходити дещо по-різному. З цього приводу читайте документацію вашої СУБД.

2. Програма намагається, якщо можливо, створювати окрему сесію бази даних для кожного вікна SQL або Таблиця у відкритій базі даних, і окрему транзакцію для кожної сесії. Ця поведінка залежить від типу бази даних ти використовуваного інтерфейсу баз даних. Наприклад, в локальній базі даних BDE всі дочірні вікна пов'язані лише з однією транзакцією. Для інтерфейсу Interbase та більшості типів баз даних інтерфейсу FireDAC кожне вікно має окрему транзакцію.

3. Кнопки та елементи меню для керування транзакціями є спільними для всіх дочірніх вікон (сесій бази даних) навіть якщо вікна пов'язані з різними транзакціями. Кожного разу, коли ви переключаєтеся між вікнами типу SQL або Table, ці кнопки та елементи меню будуть відображати поточний стан відповідної транзакції. Наприклад, коли кнопки загоряються, то транзакція поточного вікна (сесії) активна (тобто розпочата, і для неї не було зроблено commit або rollback).

4. В усіх плаваючих вікнах та в операціях DDL, ініційованих через графічний інтерфейс програми (тобто не через Редактор SQL), використовується авто-commit.

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

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

-dirty read - в поточній транзакції видимі всі зміни, внесені іншими транзакціями, навіть не підтверджені;
-read comitted - конкуруючі транзакції бачать тільки підтверджені зміни;
-repeatable read - в транзакції видимі ті зміни, що були в базі на момент початку цієї транзакції.

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

-Chaos
-Browse
-Cursor Stability
-Serializable, Isolated
-Unspecified

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