-
Всем добрый день. Юзаю FireBird + D7 + FibPlus компоненты. Не возьму в толк - как подружить откат после изменения нескольких строк, одновременно с тем, чтобы видеть эти изменения в таблице??? Если транзакция короткая, то откат хрен сделаешь (в момент Post'а транзакция запускается и тут же подтверждается). Если транзакция длинная, то в таблице меняем строку, идём к другой строке, но предыдущая строка не видит изменений (т.к. пишущая транзакция не завершена...). Для справки - параметры читающей транзакции: read
read_committed
nowait
rec_version параметры пишущей: write
nowait
rec_version
read_committed У набора данных AutoCommit = false , и poStartTransaction = false . транзацию ручками запускаю и подтверждаю или откатываю.
-
а read_uncommitted нет?
а зачем вообще?
-
> 12 © (10.12.10 11:02) [1] > а read_uncommitted нет?
а разве ФБ умеет читать не подтвержденные данные?
2 автор Для того транзакции и существуют: либо все, либо ничего. Т.е. все, что ты описал, как проблему - нормальное поведение. И так должно быть. Если по другому, то это тогда аномалия.
-
> Виталий Панасенко (10.12.2010 12:17:02) [2]
Интербейс умел, и даже умел читать грязные данные.
-
to Виталий Панасенко
> Т.е. все, что ты описал, как проблему - нормальное поведение. > И так должно быть.
я не спорю. Тогда вопрос в том как корректно поработать с базой и потом откатиться, если данные после подтверждения транзакции уже в базе?
-
> помогите новичку (12.12.10 00:02) [4]
сделать копию БД?
-
> Тогда вопрос в том как корректно поработать с базой и потом > откатиться, если данные после подтверждения транзакции уже > в базе? >
Не ну какие-то движки могут хранить "историю", но "эт вряд ли." Уж раз записал и подтвердил запись, то получи.
-
Могут почти все, но надо поработь ручками.
-
> Могут почти все, но надо поработь ручками.
ну да как примерно в магазине делали - делали копию, запускали расчеты, там менялись таблицы в процессе расчетов, а после оных, из копии апдейтили по нужным айдишникам
-
> Anatoly Podgoretsky © (10.12.10 16:04) [3]
По моему, очень неточная инфа...Версионники так не умеют
-
Да и бог с ними, не очень то и хотелось.
-
> Anatoly Podgoretsky © (10.12.10 16:04) [3] > > Интербейс умел, и даже умел читать грязные данные.
Дед Толя, ты это... того... выдыхай ! в общем.
Какой, нафиг, dirty-read у версионника "по-определению" ?
(не спорю, у IB5.1 и выше до IB6.0 был частный случай, когда он вел себя подобным образом. но это было - исключение из правил при определенном совпадении звезд и фаз луны.).
-
> PEAKTOP (12.12.2010 17:56:11) [11]
А не важно исключения это или нет, разве мы исключения ищем? Ну так бы и говорили.
-
> Не возьму в толк - как подружить откат после изменения нескольких > строк, одновременно с тем, чтобы видеть эти изменения в > таблице???
Делаем транзакцию реад_коммитед. На формочке размещаем две кнопки "коммит ретаининг" и "роллбак ретаининг". Там же размещаем визуальные компоненты для редактирования таблицы. Редактируем сколько влезет. Надо в базу записать - нажимаем первую кнопку. Надо откатить - вторую.
Ну и на закрытие формочки спрашиваем у пользователя откатывать что он там натворил или сохранять в базу.
-
как вариант - использовать ОДНУ транзакцию, аутокоммит отключить...и > YurikGL © (13.12.10 22:03) [13]
-
> [0] помогите новичку (09.12.10 00:01) А зачем это все? Откуда такая неуверенность, даже мнительность нездоровая, я бы сказал? 8-)
> Не возьму в толк - как подружить откат после изменения нескольких > строк, одновременно с тем, чтобы видеть эти изменения в таблице???
Не надо это делать на уровне СУБД и транзакций. Надо это делать ручками. Завести протокол изменеий и разработать механизм отмены произведенных ранее действий. Типа "приход" убираем "списанием" и т.д. и т.п.
|