![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А где в компонентах DAO транзакции? [D7, Пробую Oracle]
gleb_b © (2004-04-26 14:42:00)Как их стартовать и подтверждать? Или мне чего то почитать надо?
Курдль (2004-04-27 11:28:00) [21]Вторая транзакция не запускается.
gleb_b (2004-04-27 11:26:00) [22]
> Нет. Транзакция начнется после первого вмешательства и закроется
> первым коммитом.
Я конечно извеняюсь, но мне не до конца всё ясно.
Вот я запускаю два запроса
1)insert into mytable1
(field1)
values (1) Тут же стартует транзакия 1.
Второй insert into mytable2
(field1)
values (2).
Вот мне интересен момент запуска второй транзакции. Что происходит? Транзакция 1 подтверждается автоматически, а потом запускается транзакция на второй запрос? Или будут две независимые транзакции?
Курдль (2004-04-27 11:21:00) [23]
> И еще, нет в оракле такого понятия как читающая тразакция
> в терминах ИБ
А в ИБ, значицца, есть? И зачем она? :( Вот век живи - век учись :(
Плз, расскажите!
Sergey13 (2004-04-27 11:18:00) [24]2gleb_b (27.04.04 11:10) [14]
Тут как раз savepoint катит.
И еще, нет в оракле такого понятия как читающая тразакция в терминах ИБ, и ее соответственно не надо комитить/откатывать и при комит ничего не закрывается.
Курдль (2004-04-27 11:13:00) [25]
> Неужели я не могу сделать запрос типа
> insert into mytable1
> (field1)
> values (1)
> При этом если у меня не подтверждён ещё какой запрос, то
> я буду вынужден подтверждать оба или откатывать тоже оба?
Нет. Транзакция начнется после первого вмешательства и закроется первым коммитом.
gleb_b (2004-04-27 11:10:00) [26]
> Ну дык разные продукты, разные БД, разные и подходы.
Ну мне как раз про этот подход и надо почитать, тыкните пожалуйста носом. А если можете то в двух словах объясните. Неужели я не могу сделать запрос типа
insert into mytable1
(field1)
values (1)
При этом если у меня не подтверждён ещё какой запрос, то я буду вынужден подтверждать оба или откатывать тоже оба?
DenK_vrtz (2004-04-27 11:06:00) [27]Для интересующихся :)
(выдержка из документации по ORACLE)
Транзакция начинается с первой исполняемой команды SQL и заканчивается, когда совершается одно из следующих событий:
- Комманда COMMIT или ROLLBACK
- Команда DDL - например, CREATE
- Команда DCL
- Завершение сеанса работы в SQL*Plus
- Аварийный сбой или аварийная остановка системы
Когда одна транзакция завершена, следующая исполняемая команда SQL автоматически начинает следующую транзакцию.
Результаты выполнения команды DDL или DCL фиксируются автоматически. Следовательно, эти команды неявно завершают транзакцию.
(С) Введение в ORACLE
Спасибо за внимание! :)
Sergey13 (2004-04-27 11:05:00) [28]2Курдль © (27.04.04 10:56) [11]
>Что "изменять"? Набор данных? Или апдэйтить?
Данные в БД. Способов/методов много разных. Суть одна - начало изменения данных в БД - начало транзакции.
Курдль (2004-04-27 10:56:00) [29]
> 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 10:49:00) [30]gleb_b (27.04.04 10:40) [8]
Ну дык разные продукты, разные БД, разные и подходы.
gleb_b (2004-04-27 10:41:00) [31]
> , использую OraSession.Commit(RollBack)?
=используя OraSession.Commit(RollBack)?
gleb_b (2004-04-27 10:40:00) [32]
> ODAC и DOA разные компоненты!
А что лучше? Или чем вы пользуетесь? У меня именно ODAC.
> Commit&Rollback стандартно.
Не совсем понимаю. Вот в IBDataSet, IBQuery (FIBDataSet,FIBQuery) я сам руками указываю какую транзакцию использовать для каждого НД или запроса, а в Odac такого нет. Те Commit&Rollback есть у OraSession, а это как я понимаю эквивалент IBDataBase (FIBDataBase). Так получается что я подтверждаю(откатываю) все открытые мной транзакции в данный момент, использую OraSession.Commit(RollBack)?
Sergey13 (2004-04-27 08:26:00) [33]2Курдль © (26.04.04 17:02) [5]
>TOracleSession.SetTransaction
Это параметры транзакции, а не старт.
2gleb_b (26.04.04 14:42)
Как начал изменять - она стартует автоматом. Commit&Rollback стандартно. Есть еще возможность работать с точками возврата Savepoint and RollbackToSavepoint. Если редактируешь в гриде DOA сама комитит, если конечно AutoCommuit=True для сессии.
Deniz (2004-04-27 06:25:00) [34]> gleb_b (26.04.04 15:40) [4]
> А ещё на некоторых сайтах они фигурируют как ODAC, но какая в сущности разница. Так что, транзакции в Oracle отменили ;-) ?
ODAC и DOA разные компоненты!
Курдль (2004-04-26 17:02:00) [35]TOracleSession.SetTransaction
gleb_b (2004-04-26 15:40:00) [36]А ещё на некоторых сайтах они фигурируют как ODAC, но какая в сущности разница. Так что, транзакции в Oracle отменили ;-) ?
Курдль (2004-04-26 15:16:00) [37]В смысле, DOA :)
Курдль (2004-04-26 15:16:00) [38]В смысле, DOA :)
Курдль (2004-04-26 15:15:00) [39]Я знаю только DAO :(