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


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


    У набора данных
    AutoCommit = false

    , и
    poStartTransaction = false

    . транзацию ручками запускаю и подтверждаю или откатываю.
  • 12 © (10.12.10 11:02) [1]
    а read_uncommitted нет?

    а зачем вообще?
  • Виталий Панасенко (10.12.10 12:17) [2]

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

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

    2 автор
    Для того транзакции и существуют: либо все, либо ничего. Т.е. все, что ты описал, как проблему - нормальное поведение. И так должно быть. Если по другому, то это тогда аномалия.
  • Anatoly Podgoretsky © (10.12.10 16:04) [3]
    > Виталий Панасенко  (10.12.2010 12:17:02)  [2]

    Интербейс умел, и даже умел читать грязные данные.
  • помогите новичку (12.12.10 00:02) [4]
    to Виталий Панасенко

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

    я не спорю. Тогда вопрос в том как корректно поработать с базой и потом откатиться, если данные после подтверждения транзакции уже в базе?
  • 12 © (12.12.10 01:45) [5]

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

    сделать копию БД?
  • Германн © (12.12.10 02:38) [6]

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

    Не ну какие-то движки могут хранить "историю", но "эт вряд ли."
    Уж раз записал и подтвердил запись, то получи.
  • Anatoly Podgoretsky © (12.12.10 08:49) [7]
    Могут почти все, но надо поработь ручками.
  • 12 © (12.12.10 14:15) [8]

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


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

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

    По моему, очень неточная инфа...Версионники так не умеют
  • Anatoly Podgoretsky © (12.12.10 17:46) [10]
    Да и бог с ними, не очень то и хотелось.
  • PEAKTOP © (12.12.10 17:56) [11]
    > Anatoly Podgoretsky ©   (10.12.10 16:04) [3]
    >
    > Интербейс умел, и даже умел читать грязные данные.


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

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

    (не спорю, у IB5.1 и выше до IB6.0 был частный случай, когда он вел себя подобным образом. но это было - исключение из правил при определенном совпадении звезд и фаз луны.).
  • Anatoly Podgoretsky © (12.12.10 18:23) [12]
    > PEAKTOP  (12.12.2010 17:56:11)  [11]

    А не важно исключения это или нет, разве мы исключения ищем? Ну так бы и
    говорили.
  • YurikGL © (13.12.10 22:03) [13]

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


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

    Ну и на закрытие формочки спрашиваем у пользователя откатывать что он там натворил или сохранять в базу.
  • Виталий Панасенко (14.12.10 09:33) [14]
    как вариант - использовать ОДНУ транзакцию, аутокоммит отключить...и
    > YurikGL ©   (13.12.10 22:03) [13]
  • Sergey13 © (14.12.10 11:13) [15]
    > [0] помогите новичку   (09.12.10 00:01)
    А зачем это все? Откуда такая неуверенность, даже мнительность нездоровая, я бы сказал? 8-)

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

    Не надо это делать на уровне СУБД и транзакций. Надо это делать ручками. Завести протокол изменеий и разработать механизм отмены произведенных ранее действий. Типа "приход" убираем "списанием" и т.д. и т.п.
 
Конференция "Базы" » откат изменений нескольких строк и видеть что поменяли
Есть новые Нет новых   [134431   +16][b:0][p:0.001]