Особливості роботи об’єктів при скасуванні транзакції

Живе на форумі Група: Команда Повідомлень: 3478 З: Одеса Дякую сказали: 1329 разів Рейтинг: 977.8 --> ;

p align="justify"> При роботі з об'єктами, призначеними для модифікації даних, що зберігаються в базі даних, слід враховувати деякі особливості їх роботи в транзакціях.

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

Цю обставину слід враховувати при розробці модулів, які виконують послідовність деяких дій у рамках транзакції.

Наприклад, якщо в модулі виконати зміну властивостей об'єкта, записати його, а потім скасувати транзакцію, то значення змінених властивостей у базі даних буде відповідати значенню до початку транзакції, а значення властивостей пам'яті включатиме виконані зміни.

Як видно з прикладу, при зверненні до якості об'єкта в пам'яті ми отримуємо змінену властивість, а при зверненні до даних об'єкта в базі даних (через посилання) отримуємо значення якості на момент початку транзакції.

Проте виняток робиться посилання об'єкта. Після скасування транзакції значення посилання на новий об'єкт, присвоєне під час транзакції, очищається.

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

Ще однією особливістю є очищенняавтоматично присвоєного під час запису коду (номера) об'єкта при скасуванні транзакції, якщо об'єкт не було створено у транзакції.

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

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