Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.10;
Скачать: CL | DM;

Вниз

Открытие/закрытие транзакции   Найти похожие ветки 

 
мини-кодер   (2008-09-03 17:42) [0]

БД Oracle, компоненты доступа DOA
Как с помощью TOracleSession открыть и закрыть транзакцию?
Нашел флаг InTransaction, но он только для чтения.


 
Johnmen ©   (2008-09-03 17:45) [1]

Искать дальше...


 
мини-кодер   (2008-09-03 17:46) [2]

SavePoint/ RollbacktoSavePoint?


 
Johnmen ©   (2008-09-03 17:46) [3]

Английский знаешь?


 
мини-кодер   (2008-09-03 17:49) [4]

Точка сохранения/Откатить к точке сохранения?


 
Johnmen ©   (2008-09-03 17:51) [5]

Ага


 
мини-кодер   (2008-09-03 17:59) [6]

так [2] - это то, что мне нужно?
Насколько я понимаю, транзакция открывается автоматически, если не открыта до этого и продолжает быть открытой, пока не произойдет комит или ролбек?
Поправьте, плиз, потому как немного плаваю в этих вопросах


 
Медвежонок Пятачок ©   (2008-09-03 18:01) [7]

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

неа


 
мини-кодер   (2008-09-03 18:03) [8]

тогда как?


 
Palladin ©   (2008-09-03 18:20) [9]

BeginTransaction или что то на подобие (Open, Start, bEgin, нАчать) существует?


 
мини-кодер   (2008-09-03 18:24) [10]

нет


 
Palladin ©   (2008-09-03 18:33) [11]

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


 
Медвежонок Пятачок ©   (2008-09-03 18:37) [12]

тогда как?

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


 
мини-кодер   (2008-09-03 18:50) [13]


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

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

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

Вопрос на засыпку: а как явно начать транзакцию? SavePoint?


 
мини-кодер   (2008-09-03 18:51) [14]


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

сорри, определяется в контексте сессии


 
Медвежонок Пятачок ©   (2008-09-03 18:53) [15]

Нашел флаг InTransaction, но он только для чтения.

не могет такого быть, чтобы не было методов старта/коммита/роллбака


 
Petr V. Abramov ©   (2008-09-03 23:38) [16]


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

да


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

насколько я помню, commit и rollback для завершения, для старта ниче не надо, оно не BDE


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

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

да


Не да, а нет.
Если транзакциями явно не управляют, то каждый SomeQuery.ExecSQL стартует и коммитит транзакцию.
Она, неявно начавшись, не продолжается пока не будет вызван явный коммит/роллбак.


 
Sergey13 ©   (2008-09-04 09:05) [18]

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

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


 
Johnmen ©   (2008-09-04 09:07) [19]


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

Это что, так DOA устроен?


 
Медвежонок Пятачок ©   (2008-09-04 09:30) [20]

Это что, так DOA устроен?

не только он


 
Игорь Шевченко ©   (2008-09-04 09:43) [21]

В оракле нет оператора "начать транзакцию". Транзакция неявно начинается с первого оператора, изменяющего данные и завершается операторами COMMIT или ROLLBACK.


 
Медвежонок Пятачок ©   (2008-09-04 09:46) [22]

В оракле нет

Можно и так сказать. Если отвлечься от специфики вопроса.


 
Игорь Шевченко ©   (2008-09-04 09:50) [23]


> Если отвлечься от специфики вопроса.


если принимать во внимание специфику вопроса, то у автора надо спросить - а нафига ему это ?


 
Johnmen ©   (2008-09-04 09:56) [24]


> не только он

Кто ещё?


 
Медвежонок Пятачок ©   (2008-09-04 10:11) [25]

Кто ещё?

bde,ado,odak .,......


 
Johnmen ©   (2008-09-04 10:44) [26]


> bde,ado,odak .,......

Ну с бде ты погорячился.


 
Медвежонок Пятачок ©   (2008-09-04 10:47) [27]

в чем именно?


 
Медвежонок Пятачок ©   (2008-09-04 10:48) [28]

Берем бде, транзакциями не управляем.
выполняем подряд три вызова экзекsql.
будут последовательно стартованы три транзации.
а не одна


 
Johnmen ©   (2008-09-04 13:39) [29]


> в чем именно?

в [17]

> будут последовательно стартованы три транзации.а не одна

Где про это можно почитать?


 
evvcom ©   (2008-09-05 08:53) [30]


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


Ты не прав.


> Медвежонок Пятачок ©   (04.09.08 10:11) [25]
>
> Кто ещё?
>
> bde,ado,odak .,......
>

И с ODAC (заметь не odak) ты тоже погорячился


 
evvcom ©   (2008-09-05 10:23) [31]

Есть минутка, поясню про ODAC. В TOraSession и TOraDataSet есть проперть AutoCommit со значением по дефолту True. В этом случае компонент действительно ведет себя как ты описываешь, вот только поведение конкретной реализации какого-то компонента еще не говорит о том, что точно так же ведет себя и сервер. Где-то в недрах своего кода компонент ЯВНО вызывает Commit после любого изменения. А ты поставь AutoCommit в False и будешь разочарован в своей былой уверенности.


 
Petr V. Abramov ©   (2008-09-05 12:04) [32]


> evvcom ©   (05.09.08 10:23) [31]

и в BDE по-моему какие-то похожие проперти были


 
evvcom ©   (2008-09-05 12:16) [33]

там CachedUpdates, в одаке такая проперть тоже есть, но это не коммит серверный. У БДЕ скорее всего какой-нить DbiCommit (такой вроде префикс там?) внутрях вызывается независимо от желания пользователя.


 
Игорь Шевченко ©   (2008-09-05 12:39) [34]


> У БДЕ скорее всего какой-нить DbiCommit (такой вроде префикс
> там?) внутрях вызывается независимо от желания пользователя.
>


зависимо от желания. Это желание прописывается в настройках алиаса



Страницы: 1 вся ветка

Текущий архив: 2009.05.10;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.008 c
2-1238493524
начинающий96
2009-03-31 13:58
2009.05.10
ООП


15-1235944412
Nic
2009-03-02 00:53
2009.05.10
MySQL-база на хостинге и клиент на Delphi


3-1220519388
greg123
2008-09-04 13:09
2009.05.10
Можно ли в запросе заменить названия столбцов на их описание?


4-1209133881
Тыщ
2008-04-25 18:31
2009.05.10
wvsprintf и размер буфера для нее


2-1238143029
igorntk
2009-03-27 11:37
2009.05.10
Поиск в БД