Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

откат изменений нескольких строк и видеть что поменяли


помогите новичку ©   (2010-12-09 00:01:00) 

Всем добрый день.
Юзаю FireBird + D7 + FibPlus компоненты.
Не возьму в толк - как подружить откат после изменения нескольких строк, одновременно с тем, чтобы видеть эти изменения в таблице???
Если транзакция короткая, то откат хрен сделаешь (в момент Post'а транзакция запускается и тут же подтверждается). Если транзакция длинная, то в таблице меняем строку, идём к другой строке, но предыдущая строка не видит изменений (т.к. пишущая транзакция не завершена...).
Для справки - параметры читающей транзакции:
read
read_committed
nowait
rec_version

параметры пишущей:
write
nowait
rec_version
read_committed

У набора данных AutoCommit = false, и poStartTransaction = false. транзацию ручками запускаю и подтверждаю или откатываю.


Sergey13   (2010-12-14 11:13:00) [1]

> [0] помогите новичку   (09.12.10 00:01)
А зачем это все? Откуда такая неуверенность, даже мнительность нездоровая, я бы сказал? 8-)

> Не возьму в толк - как подружить откат после изменения нескольких
> строк, одновременно с тем, чтобы видеть эти изменения в таблице???

Не надо это делать на уровне СУБД и транзакций. Надо это делать ручками. Завести протокол изменеий и разработать механизм отмены произведенных ранее действий. Типа "приход" убираем "списанием" и т.д. и т.п.


Виталий Панасенко   (2010-12-14 09:33:00) [2]

как вариант - использовать ОДНУ транзакцию, аутокоммит отключить...и
> YurikGL ©   (13.12.10 22:03) [13]


YurikGL   (2010-12-13 22:03:00) [3]


> Не возьму в толк - как подружить откат после изменения нескольких
> строк, одновременно с тем, чтобы видеть эти изменения в
> таблице???


Делаем транзакцию реад_коммитед.
На формочке размещаем две кнопки "коммит ретаининг" и "роллбак ретаининг". Там же размещаем визуальные компоненты для редактирования таблицы.
Редактируем сколько влезет. Надо в базу записать - нажимаем первую кнопку. Надо откатить - вторую.

Ну и на закрытие формочки спрашиваем у пользователя откатывать что он там натворил или сохранять в базу.


Anatoly Podgoretsky   (2010-12-12 18:23:00) [4]

> PEAKTOP  (12.12.2010 17:56:11)  [11]

А не важно исключения это или нет, разве мы исключения ищем? Ну так бы и
говорили.


PEAKTOP   (2010-12-12 17:56:00) [5]

> Anatoly Podgoretsky ©   (10.12.10 16:04) [3]
>
> Интербейс умел, и даже умел читать грязные данные.


Дед Толя, ты это... того...   выдыхай ! в общем.

Какой, нафиг, dirty-read у версионника "по-определению" ?

(не спорю, у IB5.1 и выше до IB6.0 был частный случай, когда он вел себя подобным образом. но это было - исключение из правил при определенном совпадении звезд и фаз луны.).


Anatoly Podgoretsky   (2010-12-12 17:46:00) [6]

Да и бог с ними, не очень то и хотелось.


Виталий Панасенко(дом)   (2010-12-12 14:54:00) [7]


> Anatoly Podgoretsky ©   (10.12.10 16:04) [3]

По моему, очень неточная инфа...Версионники так не умеют


12   (2010-12-12 14:15:00) [8]


> Могут почти все, но надо поработь ручками.


ну да
как примерно в магазине делали - делали копию, запускали расчеты, там менялись таблицы в процессе расчетов, а после оных, из копии апдейтили по нужным айдишникам


Anatoly Podgoretsky   (2010-12-12 08:49:00) [9]

Могут почти все, но надо поработь ручками.


Германн   (2010-12-12 02:38:00) [10]


> Тогда вопрос в том как корректно поработать с базой и потом
> откатиться, если данные после подтверждения транзакции уже
> в базе?
>

Не ну какие-то движки могут хранить "историю", но "эт вряд ли."
Уж раз записал и подтвердил запись, то получи.


12   (2010-12-12 01:45:00) [11]


> помогите новичку   (12.12.10 00:02) [4]

сделать копию БД?


помогите новичку   (2010-12-12 00:02:00) [12]

to Виталий Панасенко

> Т.е. все, что ты описал, как проблему - нормальное поведение.
>  И так должно быть.

я не спорю. Тогда вопрос в том как корректно поработать с базой и потом откатиться, если данные после подтверждения транзакции уже в базе?


Anatoly Podgoretsky   (2010-12-10 16:04:00) [13]

> Виталий Панасенко  (10.12.2010 12:17:02)  [2]

Интербейс умел, и даже умел читать грязные данные.


Виталий Панасенко   (2010-12-10 12:17:00) [14]


> 12 ©   (10.12.10 11:02) [1]
> а read_uncommitted нет?

а разве ФБ умеет читать не подтвержденные данные?

2 автор
Для того транзакции и существуют: либо все, либо ничего. Т.е. все, что ты описал, как проблему - нормальное поведение. И так должно быть. Если по другому, то это тогда аномалия.


12   (2010-12-10 11:02:00) [15]

а read_ uncommitted нет?

а зачем вообще?


Наверх

Титульная страница Поиск, карта сайта Написать письмо