Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизА где в компонентах DAO транзакции? Найти похожие ветки
← →
gleb_b (2004-04-26 14:42) [0]Как их стартовать и подтверждать? Или мне чего то почитать надо?
← →
Курдль © (2004-04-26 15:15) [1]Я знаю только DAO :(
← →
Курдль © (2004-04-26 15:16) [2]В смысле, DOA :)
← →
Курдль © (2004-04-26 15:16) [3]В смысле, DOA :)
← →
gleb_b (2004-04-26 15:40) [4]А ещё на некоторых сайтах они фигурируют как ODAC, но какая в сущности разница. Так что, транзакции в Oracle отменили ;-) ?
← →
Курдль © (2004-04-26 17:02) [5]TOracleSession.SetTransaction
← →
Deniz © (2004-04-27 06:25) [6]> gleb_b (26.04.04 15:40) [4]
> А ещё на некоторых сайтах они фигурируют как ODAC, но какая в сущности разница. Так что, транзакции в Oracle отменили ;-) ?
ODAC и DOA разные компоненты!
← →
Sergey13 © (2004-04-27 08:26) [7]2Курдль © (26.04.04 17:02) [5]
>TOracleSession.SetTransaction
Это параметры транзакции, а не старт.
2gleb_b (26.04.04 14:42)
Как начал изменять - она стартует автоматом. Commit&Rollback стандартно. Есть еще возможность работать с точками возврата Savepoint and RollbackToSavepoint. Если редактируешь в гриде DOA сама комитит, если конечно AutoCommuit=True для сессии.
← →
gleb_b (2004-04-27 10:40) [8]
> ODAC и DOA разные компоненты!
А что лучше? Или чем вы пользуетесь? У меня именно ODAC.
> Commit&Rollback стандартно.
Не совсем понимаю. Вот в IBDataSet, IBQuery (FIBDataSet,FIBQuery) я сам руками указываю какую транзакцию использовать для каждого НД или запроса, а в Odac такого нет. Те Commit&Rollback есть у OraSession, а это как я понимаю эквивалент IBDataBase (FIBDataBase). Так получается что я подтверждаю(откатываю) все открытые мной транзакции в данный момент, использую OraSession.Commit(RollBack)?
← →
gleb_b (2004-04-27 10:41) [9]
> , использую OraSession.Commit(RollBack)?
=используя OraSession.Commit(RollBack)?
← →
Sergey13 © (2004-04-27 10:49) [10]gleb_b (27.04.04 10:40) [8]
Ну дык разные продукты, разные БД, разные и подходы.
← →
Курдль © (2004-04-27 10:56) [11]
> Sergey13 © (27.04.04 08:26) [7]
> 2Курдль © (26.04.04 17:02) [5]
> >TOracleSession.SetTransaction
> Это параметры транзакции, а не старт.
Точно! Запамятовал. Но с этим не согласен:
> Как начал изменять - она стартует автоматом.
Что "изменять"? Набор данных? Или апдэйтить?
procedure ApplyUpdates(const DataSets: array of TOracleDataSet; Commit: Boolean);
Description
Applies the cached updates of the datasets to the database. If a dataset is a master in a master/detail relation, the updates in all detail datasets will be applied as well. Each dataset must have its CachedUpdates property set to True.
If the Commit parameter is True, the changes will also be committed. If the Commit parameter is False, the updates will not be committed so that you can perform some additional actions before calling CommitUpdates or Rollback:
← →
Sergey13 © (2004-04-27 11:05) [12]2Курдль © (27.04.04 10:56) [11]
>Что "изменять"? Набор данных? Или апдэйтить?
Данные в БД. Способов/методов много разных. Суть одна - начало изменения данных в БД - начало транзакции.
← →
DenK_vrtz © (2004-04-27 11:06) [13]Для интересующихся :)
(выдержка из документации по ORACLE)
Транзакция начинается с первой исполняемой команды SQL и заканчивается, когда совершается одно из следующих событий:
- Комманда COMMIT или ROLLBACK
- Команда DDL - например, CREATE
- Команда DCL
- Завершение сеанса работы в SQL*Plus
- Аварийный сбой или аварийная остановка системы
Когда одна транзакция завершена, следующая исполняемая команда SQL автоматически начинает следующую транзакцию.
Результаты выполнения команды DDL или DCL фиксируются автоматически. Следовательно, эти команды неявно завершают транзакцию.
(С) Введение в ORACLE
Спасибо за внимание! :)
← →
gleb_b (2004-04-27 11:10) [14]
> Ну дык разные продукты, разные БД, разные и подходы.
Ну мне как раз про этот подход и надо почитать, тыкните пожалуйста носом. А если можете то в двух словах объясните. Неужели я не могу сделать запрос типа
insert into mytable1
(field1)
values (1)
При этом если у меня не подтверждён ещё какой запрос, то я буду вынужден подтверждать оба или откатывать тоже оба?
← →
Курдль © (2004-04-27 11:13) [15]
> Неужели я не могу сделать запрос типа
> insert into mytable1
> (field1)
> values (1)
> При этом если у меня не подтверждён ещё какой запрос, то
> я буду вынужден подтверждать оба или откатывать тоже оба?
Нет. Транзакция начнется после первого вмешательства и закроется первым коммитом.
← →
Sergey13 © (2004-04-27 11:18) [16]2gleb_b (27.04.04 11:10) [14]
Тут как раз savepoint катит.
И еще, нет в оракле такого понятия как читающая тразакция в терминах ИБ, и ее соответственно не надо комитить/откатывать и при комит ничего не закрывается.
← →
Курдль © (2004-04-27 11:21) [17]
> И еще, нет в оракле такого понятия как читающая тразакция
> в терминах ИБ
А в ИБ, значицца, есть? И зачем она? :( Вот век живи - век учись :(
Плз, расскажите!
← →
gleb_b (2004-04-27 11:26) [18]
> Нет. Транзакция начнется после первого вмешательства и закроется
> первым коммитом.
Я конечно извеняюсь, но мне не до конца всё ясно.
Вот я запускаю два запроса
1)insert into mytable1
(field1)
values (1) Тут же стартует транзакия 1.
Второй insert into mytable2
(field1)
values (2).
Вот мне интересен момент запуска второй транзакции. Что происходит? Транзакция 1 подтверждается автоматически, а потом запускается транзакция на второй запрос? Или будут две независимые транзакции?
← →
Курдль © (2004-04-27 11:28) [19]Вторая транзакция не запускается.
← →
gleb_b (2004-04-27 11:28) [20]
> Тут как раз savepoint катит.
> И еще, нет в оракле такого понятия как читающая тразакция
> в терминах ИБ, и ее соответственно не надо комитить/откатывать
> и при комит ничего не закрывается.
Теперь понял. Спасибо.
← →
Sergey13 © (2004-04-27 11:32) [21]2Курдль © (27.04.04 11:28) [19]
>Вторая транзакция не запускается.
С какого пива? Просто это все сработает (если сработает вообще 8-) в рамках одной транзакции.
← →
Sergey13 © (2004-04-27 11:34) [22]2Курдль © (27.04.04 11:28) [19]
Сори, я кажется неправильно понял. 8-)
← →
gleb_b (2004-04-27 11:39) [23]Последний вопрос по компонентам. Так что вам больше нравится, ODAC или DOA?
PS Курдль и Sergey13 спасибо за разьяснения.
> А в ИБ, значицца, есть? И зачем она? :( Вот век живи - век
> учись :(
> Плз, расскажите!
Она для того чтобы читающие пользователи не блокировали пишущих. Те одному Dataset"y можно сопоставить 2 транзакции. В одной читать, а в другой писать. В FibPlus это реализовано, а для стандартных компонентов надо апдейт скачать. Кажись так :-)
← →
Курдль © (2004-04-27 11:43) [24]
> Она для того чтобы читающие пользователи не блокировали
> пишущих.
Тогда я вычеркиваю и ИБ из списка потенциальных СУБД, с которыми можно работать! :)
← →
gleb_b (2004-04-27 11:46) [25]
> Тогда я вычеркиваю и ИБ из списка потенциальных СУБД, с
> которыми можно работать! :)
А чёй то, это даёт лишнюю гибкость при работе. Или вы исповедуете принцип "блокировать всё, что можно и даже больше"?
← →
Sergey13 © (2004-04-27 11:47) [26]2gleb_b (27.04.04 11:39) [23]
В Оракле читатель никогда не блокирует, если специально не указывать обратное.
← →
gleb_b (2004-04-27 12:30) [27]Ну а насчёт компонентов какже? :-(
Чё посоветуете?
← →
Deniz © (2004-04-27 13:06) [28]> gleb_b (27.04.04 11:39) [23]
>... Она для того чтобы читающие пользователи не блокировали
> пишущих...
А это откуда? Читатель, в FireBird/InterBase, никогда не блокирует никого, ни писателя ни читателя!
Просто в FIBPlus реализована возможность, на мой взгляд очень удобная. Для DataSet"а назначаются 2 транзакции. 1 - read only легкая не нагружающая сервер(не создается версии записей), и вторая пишущая(параметры могут быть разные + write). Так вот, когда юзер редактирует запись все изменения хранятся в локальном буфере и после того как был вызван Post автоматически стартует 2-транзакция посылает на сервер запрос на изменение и если все "хорошо" + AutoCommit=True, то завершается по Commit. Если произошли ошибки, то 2-транзакция откатывается.
Вопрос про Oracle и транзакции мне тоже интересен, и поэтому присоединяюсь к автору. Вот мой вопрос как продолжение gleb_b (27.04.04 11:26) [18]
1)insert into mytable1
(field1)
values (1) Тут же стартует транзакия 1.
Второй insert into mytable2
(field1)
values (2).
Что делать, если надо первый insert откатить, а второй закомитить?
>gleb_b
Недавно при поиске в rambler нашел небольшое сравнение(очень маленькая статья) по DOA и ODAC, но там сравнение кол-ва компонентов и некоторых возможностей, и маленький вывод. Если найдешь что получше кинь ссылку, или может кто знает из гуру Oracle.
← →
gleb_b (2004-04-27 15:53) [29]
> Вопрос про Oracle и транзакции мне тоже интересен
Кажется интересен он только нам с тобой :-(
> сравнение по DOA и ODAC
Статьи не нашёл, но общее впечатление, что народ больше DOA уважает. Хотя лично мне пока больше ODAC нравится, у него в OraQuery есть возможность забить Select, Insert, Update, Refresh запросы, а у OracleDataSet (из DOA) нет. А я к этому привык пользуя FIBDataSet.
← →
Курдль © (2004-04-27 15:58) [30]
> > Вопрос про Oracle и транзакции мне тоже интересен
>
> Кажется интересен он только нам с тобой :-(
Чего на них так свет клином сошелся? Не утомляйте мОзги!
Пишите OracleSession.ApplyUpdate([DataSet1, DataSet2, DataSet3 ...]); и будет вам счастье! Откроется транзакция без ваших усилий, отработаются все фиксации изменений всех датасетов, а если что-то внутри глюкнет - все автоматом откатится!
← →
roottim (2004-04-27 16:35) [31]2Что делать, если надо первый insert откатить, а второй закомитить?
неее. сумбур какой-то в вашей логике... смысл транзакции как раз в том:
либо пан либо пропал ( плюс оракл имеет сейвпоинты но только в прямом направлении.. тобиш кусками нельзя)
← →
gleb_b (2004-04-27 16:39) [32]
> оракл имеет сейвпоинты но только в прямом направлении..
> тобиш кусками нельзя
Э - э - эх.
Вспоминается анекдот про наших лесорубов и финскую бензопелу.
← →
Erik © (2004-04-27 17:14) [33]Лучше использовать ODAC, а то непросто замучаетесь с пераметрами, а умрете. Для midas также предпочительней ODAC(мягко сказано). А принципы транзакций везде одинаковы, что IB, что ORACLE.
← →
Курдль © (2004-04-27 17:17) [34]
> Лучше использовать ODAC, а то непросто замучаетесь с пераметрами,
> а умрете.
"Это как?" - спросил мертвец. :(
← →
Sergey13 © (2004-04-28 08:59) [35]2gleb_b (27.04.04 15:53) [29]
>Хотя лично мне пока больше ODAC нравится, у него в OraQuery есть возможность забить Select, Insert, Update, Refresh запросы, а у OracleDataSet (из DOA) нет.
А ты ощущаешь разницу между словами Query и DataSet? Это первое. Второе. В Query DOA (С ODAC не работал) можно забить чего угодно, хоть скрипт, хоть неименованный PL/SQL блок.
← →
gleb_b (2004-04-28 10:02) [36]
> А ты ощущаешь разницу между словами Query и DataSet?
Ощущаю.
Видимо дело в том что ты не работал с ODAC. Их SmartQuery по сути своей и есть DataSet.
← →
Sergey13 © (2004-04-28 10:09) [37]2gleb_b (28.04.04 10:02) [36]
В огогоде бузина, а в Киеве дядька. 8-)
← →
roottim (2004-04-28 10:56) [38]У меня крутиться на ODAC. вот чего нет в DOA дык это Net option
чем собственно ODAC мне и нравилтся.. я поменял немало версий ODAC, и минус их в том что от версии к версии наблюдались очередные баги( которые приходилось обходить), но вот с версии
4.10 более такого не наблюдаю (видомо был переходный период по крайней мере с версии 3.15 кажись, которая была стабильной).
DOA в этом смысле стабильный компонент.
Многие DOA товарищи утверждают что в ODAC лишняя туча компонентов, но это все вракии.. если они читали руководство.. то там написано что всякие квери, таблы и пр-яя БДЕ подобная наполненность, есть лиш комерческий ход, для привлечения перехода с БДЕ на ОДАК, ибо так им будет проще жить (и визард такой есть)
аВ действительности DOA и ODAC по возможностям РАВНЫ.. и блоки и все что угодно.. пожайлуста..
ничего не могу сказать про бесплантые NC OCI, к сожалению так их и непробовал...
так что для gleb_b - в чем удобнее в том и делайте
← →
gleb_b (2004-04-28 11:40) [39]
> roottim (28.04.04 10:56) [38]
Спасибо. А ещё мне хелп в ODAC больше понравился :=)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.033 c