|
Тема
|
Съвет за Rollback на транзакция
|
|
Автор | Daniel (Нерегистриран) |
Публикувано | 19.06.05 18:32 |
|
Здравейте, имам следните въпроси:
1. Възможно ли е при клиент-сървър система, след ApplyUpdates на ClientDataSet (клиентска част - DataModule), да се направи реверс, т.е. пратената информация да се върне, все едно изобщо не е била записвана в базата ?
2. Подобно на първия въпрос, само че за сървърна част. Ако след SQL заявка (Query) съм дал Commit, възможно ли е транзакцията да се върне обратно ?
Използва се DCOMConnection, RemoteDataModule (сървър), DataModule (клиент), Query (сървър), ClientDataSet (клиент), Database компонент.
Базата данни е FireBird 1.5
Среда: Delphi 5, Windows XP
Моля, ако някой може да помогне с информация как се прави това , нека помогне.
| |
|
Здравей!
На първия ти въпрос:
1. Възможно ли е при клиент-сървър система, след ApplyUpdates на ClientDataSet (клиентска част - DataModule), да се направи реверс, т.е. пратената информация да се върне, все едно изобщо не е била записвана в базата ?
Можеш единствено да rollback-неш транзакцията и да си презаредиш DataSet-а, т.е. губиш промените.
Относно:
2. Подобно на първия въпрос, само че за сървърна част. Ако след SQL заявка (Query) съм дал Commit, възможно ли е транзакцията да се върне обратно ?
Прекият отговор е - не, не можеш. Но има едно "НО". Ти ползваш Firebird 1.5. Той поддържа savepoints. Това е нещо като вложени транзакции, т.е. вместо да правиш commit можеш да сложиш savepoint и след това да rollback-неш до него или да rollback-неш цялата транзакция. За savepoints виж в Release Notes-а на сървъра. Там е много добре описано.
| |
|
|
|
|