Delphi 3 и создание приложений баз данных

Подтверждение кэшированных изменений методом ApplyUpdates набора данных


Метод компонентов TTable, TQuery, TStoredProc

procedure ApplyUpdates;

применяется для подтверждения кэшированных изменений отдельного НД. Отсутствие ошибок при выполнении метода гарантирует успешность операции подтверждения.

Метод компонентов TTable, TQuery, TStoredProc

procedure CommitUpdates;

применяется для обновления в БД кэшированных изменений, успешно подтвержденных методом ApplyUpdates.

Двухфазное подтверждение в случае использования методов ApplyUpdates и CommitUpdates необходимо реализовывать явно.

Пример.

Пусть требуется подтвердить кэшированные изменения НД Tovary и Rashod. В случае неудачи необходимо откатить кэшированные изменения:

Databasel.StartTransaction;

TRY

Tovary.ApplyUpdates ;

Rashod.ApplyUpdates;

Databasel.Commit;



Tovary.CommitUpdates;

Rashod.CommitUpdates ;

EXCEPT

Databasel.Rollback;

ShowMessage('Изменения могут привести к нарушению ' + 'целостности БД. Изменения отменены!' );

Tovary.CancelUpdates ;

Rashod.CancelUpdates ;

END;//try

В случае сбоя при выполнении Tovary.Apply Updates или Rashod.ApplyUpdates не произойдет подтверждения транзакции (Database]. Commit) и подтверждения кэшированных изменений для каждой из таблиц; значения измененных записей будут восстановлены в значения, имевшие место до изменений (Tovary.CancelUpdates, Tovary. CancelUpdates).

Часто важно, чтобы даже в случае неудачной попытки запомнить изменения, значения измененных записей не менялись - например, для того чтобы пользователь мог внести коррективы и попытаться снова подтвердить изменения. В этом случае из кода необходимо убрать вызов метода CancelUpdates:

Database1.StartTransaction;

TRY

Tovary.ApplyUpdates ;

Rashod.ApplyUpdates;

Databasel.Commit;

Tovary.CommitUpdates;

Rashod.CommitUpdates ;

EXCEPT

Databasel.Rollback;

ShowMessage('Изменения могут привести к нарушению ' + 'целостности БД. Изменения отменены!' );

END;//try



Содержание раздела