Конференция "Базы" » Открытие/закрытие транзакции
 
  • мини-кодер (03.09.08 17:42) [0]
    БД Oracle, компоненты доступа DOA
    Как с помощью TOracleSession открыть и закрыть транзакцию?
    Нашел флаг InTransaction, но он только для чтения.
  • Johnmen © (03.09.08 17:45) [1]
    Искать дальше...
  • мини-кодер (03.09.08 17:46) [2]
    SavePoint/ RollbacktoSavePoint?
  • Johnmen © (03.09.08 17:46) [3]
    Английский знаешь?
  • мини-кодер (03.09.08 17:49) [4]
    Точка сохранения/Откатить к точке сохранения?
  • Johnmen © (03.09.08 17:51) [5]
    Ага
  • мини-кодер (03.09.08 17:59) [6]
    так [2] - это то, что мне нужно?
    Насколько я понимаю, транзакция открывается автоматически, если не открыта до этого и продолжает быть открытой, пока не произойдет комит или ролбек?
    Поправьте, плиз, потому как немного плаваю в этих вопросах
  • Медвежонок Пятачок © (03.09.08 18:01) [7]
    Насколько я понимаю, транзакция открывается автоматически, если не открыта до этого и продолжает быть открытой, пока не произойдет комит или ролбек?

    неа
  • мини-кодер (03.09.08 18:03) [8]
    тогда как?
  • Palladin © (03.09.08 18:20) [9]
    BeginTransaction или что то на подобие (Open, Start, bEgin, нАчать) существует?
  • мини-кодер (03.09.08 18:24) [10]
    нет
  • Palladin © (03.09.08 18:33) [11]
    значит ищи подобные методы в других компонентах TOracleXXX18+
  • Медвежонок Пятачок © (03.09.08 18:37) [12]
    тогда как?

    Если неявно начата, то сразу после выполнения обращения с клиента так же неявно коммитится
  • мини-кодер (03.09.08 18:50) [13]

    > значит ищи подобные методы в других компонентах TOracleXXX18+

    ни в TOracleDataset, ни в TOracleQuery нет никаких особых методов открытия закрытия транзакции. Разве что можно указать CommitOnPost, для датасета.
    То есть поведение транзации(тип транзакции, уровень изоляции) определяется в контексте транзакции.

    > Если неявно начата, то сразу после выполнения обращения с
    > клиента так же неявно коммитится

    Вопрос на засыпку: а как явно начать транзакцию? SavePoint?
  • мини-кодер (03.09.08 18:51) [14]

    > определяется в контексте транзакции.

    сорри, определяется в контексте сессии
  • Медвежонок Пятачок © (03.09.08 18:53) [15]
    Нашел флаг InTransaction, но он только для чтения.

    не могет такого быть, чтобы не было методов старта/коммита/роллбака
  • Petr V. Abramov © (03.09.08 23:38) [16]

    > Медвежонок Пятачок ©   (03.09.08 18:01) [7]

    да


    > мини-кодер   (03.09.08 17:42)  

    насколько я помню, commit и rollback для завершения, для старта ниче не надо, оно не BDE
  • Медвежонок Пятачок © (04.09.08 09:01) [17]
    > Медвежонок Пятачок ©   (03.09.08 18:01) [7]

    да


    Не да, а нет.
    Если транзакциями явно не управляют, то каждый SomeQuery.ExecSQL стартует и коммитит транзакцию.
    Она, неявно начавшись, не продолжается пока не будет вызван явный коммит/роллбак.
  • Sergey13 © (04.09.08 09:05) [18]
    > [0] мини-кодер   (03.09.08 17:42)

    В Оракле транзакция стартует со стартом сессии. Ее можно подтверждать или откатывать, после чего сразу как бы стартует новая. Для более сложного руления существуют точки отката (это то про что у тебя в [3]). Неявное завершение транзакции вызывает любой DDL запрос и завершение сессии.
    Т.е. работа должна строиться так - после каждого законченного действия по модификации БД делай подтверждение. Хотя теоретически можно подтвердить/откатить и всю сессию, но лучше этого не делать. 8-)
  • Johnmen © (04.09.08 09:07) [19]

    > Медвежонок Пятачок ©   (04.09.08 09:01) [17]

    Это что, так DOA устроен?
 
Конференция "Базы" » Открытие/закрытие транзакции
Есть новые Нет новых   [134473   +28][b:0][p:0.001]