![]() |
|
|
![]()
|
|
| Artiom |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1031 Регистрация: 11.3.2003 Где: Минск\Баку Репутация: 3 Всего: 17 |
Не совсем понятно когда использовать транзакции, а когда нет. И как реализуется откат.
Вот тестовый пример из хелпа
Мне непонятно, зачем здесь прописано =TABLEREVERT(.T.)? разве откат не произошел по ROLLBACK? Просто мне сейчас надо читать файл построчно и данные из строки писать в таблицы. Но если хоть в одной строке ошибка - надо откатить всю операцию. Поэтому хочу разобраться с буферизацией. -------------------- Если тебя жизнь трахает, значит, ты ещё живой |
|||
|
||||
| Cashey |
|
||||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 13 Всего: 60 |
=TABLEREVERT(.T.) в этом примере относится к строке
а ROLLBACK откатывает только то, что внутри блока BEGIN TRANSACTION ... END TRANSACTION/ROLLBACK, т.е.
Добавлено @ 11:02 Теперь постораюсь объяснить принцип. При 5-й буферизации данные, заносимые в таблицу, в эту таблицу не попадают (находятся в буфере) вплоть до выполнения комманды TABLEUPDATE. Транзакция откатывает ЛЮБЫЕ изменения произошедшие с таблицей внутри блока транзакции. Таким образом в примере было осуществленно следующие: были внесенны данные и внутри блока транзакции сохранены, а после откатанно сохранение. таким образом продемонстрированно как можно проманипулировать с данными и вернутся к ночальному их значению -------------------- библия учит любить ближнего, а камасутра обучает как именно |
||||
|
|||||
| Artiom |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1031 Регистрация: 11.3.2003 Где: Минск\Баку Репутация: 3 Всего: 17 |
ага, вроде понял. спасибо
-------------------- Если тебя жизнь трахает, значит, ты ещё живой |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 13 Всего: 60 |
да не за что
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Artiom |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1031 Регистрация: 11.3.2003 Где: Минск\Баку Репутация: 3 Всего: 17 |
Решил поднять тему, так как появились вопросы
Cashey, не мог бы ты малость пояснить по ситуациям 1. Когда используют буфферизацию 2. Когда транзакции и чтения хелпа. я предположил 1. буферизацию использовать надо всегда или почти всегда, если заботишься о целостности данных, правильной работе приложения 2. транзакции использовать если добавляешь в таблицу несколько строк "за раз", изменяешь несколько таблиц одновременно (а следовательно используется 5 буферизация) Поправь меня пожалуйста если что не так, а то в хочется все по полочкам в голове разложить -------------------- Если тебя жизнь трахает, значит, ты ещё живой |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 13 Всего: 60 |
Разновидности буферезации для прикладного программиста заключаются по сути в механизме сохранения данных и отката изменений соответсвенно.
Транзакции целесообразно использовать только при сетевой работе с базами, либо если ты не уверен в корректности своего кода. По возможности лучше избегать не нужных вложенностей транзакции. Другими словами, если хочешь, что бы изменения сохранялись только после нажатия на кнопку - используй 5-ю буферизацию, если что бы сохранялись автоматически - 3-ю или 1-ю. Транзакции используются тогда, когда надо откатить все изменения в случае если произошел сбой на этапе выполнения (например пропала сеть) -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
![]()
|
| Правила форума "Foxpro/Clipper/Dbase" | |
|
|
Запрещается! 1. Публиковать ссылки для чисто рекламных целей. 2. Оффтопить, флеймить, говорить не культурно. Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему. Задавайте вопросы правильно - как спросите, так вам и ответят. Разрешено! Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил. Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы. P.S. Размещение рекламы будет строго наказываться! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |