Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как применить commit только для одного действия?  [new]
Павел Гончаренко
Member

Откуда: Костанай, Казахстан
Сообщений: 11
for i in 1..10 loop
insert into tp_temptable1 values(i); -- Инсерт 1
insert into tp_temptable2 values(i + 10); -- Инсерт 2
commit;
end loop;
commit;

Как сделать так, чтобы после выполнения цикла commit применился только к инсерту 1. а к инсерту 2 применялся бы постоянно, после каждого пробега?
22 сен 06, 12:39    [3172214]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116074
Павел Гончаренко
for i in 1..10 loop
insert into tp_temptable1 values(i); -- Инсерт 1
insert into tp_temptable2 values(i + 10); -- Инсерт 2
commit;
end loop;
commit;

Как сделать так, чтобы после выполнения цикла commit применился только к инсерту 1. а к инсерту 2 применялся бы постоянно, после каждого пробега?


for i in 1..10 loop
insert into tp_temptable2 values(i + 10); -- Инсерт 2
commit;
end loop;

for i in 1..10 loop
insert into tp_temptable1 values(i); -- Инсерт 1
end loop;
commit;
22 сен 06, 12:44    [3172256]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
Выполнять insert2 в автономной транзакции.
22 сен 06, 12:45    [3172262]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
А у меня подозрение, что при таких требованиях чегой-то не то с алгоритмом задачи...
22 сен 06, 12:47    [3172282]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
Павел Гончаренко
Member

Откуда: Костанай, Казахстан
Сообщений: 11
andrey_anonymous
Выполнять insert2 в автономной транзакции.

А подробнее?
22 сен 06, 12:48    [3172295]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
tru55
А у меня подозрение, что при таких требованиях чегой-то не то с алгоритмом задачи...

Автор не спрашивает как решить задачу, он спрашивает как сделать commit :)
22 сен 06, 12:49    [3172302]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
tru55
А у меня подозрение, что при таких требованиях чегой-то не то с алгоритмом задачи...
+1
Наступят обязательно. Напр. на ссылочную целостность..
22 сен 06, 12:49    [3172305]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
Павел Гончаренко
Member

Откуда: Костанай, Казахстан
Сообщений: 11
dmidek
Павел Гончаренко
for i in 1..10 loop
insert into tp_temptable1 values(i); -- Инсерт 1
insert into tp_temptable2 values(i + 10); -- Инсерт 2
commit;
end loop;
commit;

Как сделать так, чтобы после выполнения цикла commit применился только к инсерту 1. а к инсерту 2 применялся бы постоянно, после каждого пробега?


for i in 1..10 loop
insert into tp_temptable2 values(i + 10); -- Инсерт 2
commit;
end loop;

for i in 1..10 loop
insert into tp_temptable1 values(i); -- Инсерт 1
end loop;
commit;


Нет, это ежу понятно, мне надо, чтобы все в одном цикле было, типа в таблицу 1 закидывается много-много записей, а таблица два - это так, для статистики, в какое время запись произошла, для мониторинга
22 сен 06, 12:50    [3172312]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
Павел Гончаренко
andrey_anonymous
Выполнять insert2 в автономной транзакции.
А подробнее?

Andrew IF очень хорошо написал, мне понравилось
22 сен 06, 12:51    [3172320]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
Павел Гончаренко
Member

Откуда: Костанай, Казахстан
Сообщений: 11
andrey_anonymous
Павел Гончаренко
andrey_anonymous
Выполнять insert2 в автономной транзакции.
А подробнее?

Andrew IF очень хорошо написал, мне понравилось

Я сделал все, как написано, кроме гугла. Читал Тома Кайта...
22 сен 06, 12:53    [3172334]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
Павел Гончаренко
для мониторинга

Для мониторинга существует V$session_longops и соответсвующий API (dbms_application_info.set_session_longops)
22 сен 06, 12:53    [3172338]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116074
Павел Гончаренко
dmidek

[src oracle]for i in 1..10 loop

for i in 1..10 loop


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


А зачем тогда эти игры с коммитами ?
22 сен 06, 12:53    [3172340]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Павел Гончаренко
.. мне надо, чтобы все в одном цикле было, типа в таблицу 1 закидывается много-много записей, а таблица два - это так, для статистики, в какое время запись произошла, для мониторинга
Так бы сразу и говорил.. Тут автономные транзакции - в тему.
22 сен 06, 12:54    [3172344]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116074
orawish
Павел Гончаренко
.. мне надо, чтобы все в одном цикле было, типа в таблицу 1 закидывается много-много записей, а таблица два - это так, для статистики, в какое время запись произошла, для мониторинга
Так бы сразу и говорил.. Тут автономные транзакции - в тему.

ОК, ОК, я тоже согласен :-)
22 сен 06, 12:56    [3172365]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
Павел Гончаренко
Member

Откуда: Костанай, Казахстан
Сообщений: 11
andrey_anonymous
Павел Гончаренко
для мониторинга

Для мониторинга существует V$session_longops и соответсвующий API (dbms_application_info.set_session_longops)


Объясняю задачу. У меня в делфях написано приложение, которое через каждые две секунды читает данные из таблицы №1.
Есть очень большая процедура формирования мега-отчета, которая длится более часа. В теле этой процедуры не надо использовать commit, так как этот час умножается на два, а то и больше.
Мне необходимо после определенных действий в этой процедуре записывать данные в таблицу №1. Но очевидно, что в Делфях я ничего не увижу, пока не выполню commit, но commit выполнять нельзя!
22 сен 06, 12:56    [3172367]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
Павел Гончаренко
Я сделал все, как написано, кроме гугла. Читал Тома Кайта...

Там написано "Чти документацию", а не "Прочитай Кайта".
22 сен 06, 12:58    [3172377]     Ответить | Цитировать Сообщить модератору
 Re: Как применить commit только для одного действия?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
Павел Гончаренко
andrey_anonymous
Павел Гончаренко
для мониторинга

Для мониторинга существует V$session_longops и соответсвующий API (dbms_application_info.set_session_longops)

Объясняю задачу.

ЧТИТЕ ДОКУМЕНТАЦИЮ, думайте, пробуйте.
Потом спросите, если не получится.
22 сен 06, 13:02    [3172418]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить