Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
выполняется блок инструкций №1 в транзакции и гдето внутри этого блока выполнится блок инструкций №2 так вот нужна возможность отката всех инструкций кроме инструкций блока №2 сэйвпоинты как я понял здесь не помогут вложенные транзакции не допустимы единственный выход это создание второй сесси для блока №2 чтоли? или есть другие варианты решения данной проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 14:35 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
джанкер wrote: > выполняется блок инструкций ?1 в транзакции > и гдето внутри этого блока выполнится блок инструкций ?2 > так вот нужна возможность отката всех инструкций кроме инструкций блока ?2 > сэйвпоинты как я понял здесь не помогут > вложенные транзакции не допустимы > единственный выход это создание второй сесси для блока ?2 чтоли? > или есть другие варианты решения данной проблемы? Чего-то я не понял. Типа такая схема: #1 start A1.1 A1.2 #2 start A2.1 A2.2 #2 end A1.3 A1.4 - здесь, допустим, ловим ошибку и нужен ROLLBACK A1.1, A1.2, A1.3, но COMMIT A2.1, A2.2 ??? Итого, нужна не вложенная, а выдергиваемая транзакция? :) 1. Если блок #2 независим от результатов предшествующих операций - вынести его в начало транзакции и рулить сейвпойнтами. 2. Если блок #2 зависит от результатов предшествующих операций - как Вы представляете откат всех инструкций кроме блока #2 в этом случае??? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 15:01 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
XM Чего-то я не понял. Типа такая схема: #1 start A1.1 A1.2 #2 start A2.1 A2.2 #2 end A1.3 A1.4 - здесь, допустим, ловим ошибку и нужен ROLLBACK A1.1, A1.2, A1.3, но COMMIT A2.1, A2.2 ??? да, именно такая схема XM Итого, нужна не вложенная, а выдергиваемая транзакция? :) 1. Если блок #2 независим от результатов предшествующих операций - вынести его в начало транзакции и рулить сейвпойнтами. 2. Если блок #2 зависит от результатов предшествующих операций - как Вы представляете откат всех инструкций кроме блока #2 в этом случае??? Posted via ActualForum NNTP Server 1.3 блок№2 независим от результатов предшедствующих операций вынести его в начало не получиться, т.к. его появление зависит от действий и желаний пользователя и может произойти в любой момент, а принудить пользователя выполнять блок №2 в начале транзакции нельзя кроме того внутри блока 2 может быть блок 3 и так далее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 15:11 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
джанкер блок№2 независим его появление зависит от действий и желаний пользователя(транзакция (не на чтение - т.е. некий снапшот, а пишущая) болтающая с юзером, это имхо плохо. Но всё таки: "тр. 2 от 1 не зависит. - Сталобыть это отдельные транзакции. Просто откройте пользователю второй сеанс (коннект, или что там у вас в клиенте) а в нем - независимо запустите транзакцию 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 15:33 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 джанкер блок№2 независим его появление зависит от действий и желаний пользователя(транзакция (не на чтение - т.е. некий снапшот, а пишущая) болтающая с юзером, это имхо плохо. Но всё таки: "тр. 2 от 1 не зависит. - Сталобыть это отдельные транзакции. Просто откройте пользователю второй сеанс (коннект, или что там у вас в клиенте) а в нем - независимо запустите транзакцию 2. ну да стало быть так и сделаю :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 17:06 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
джанкер XM Чего-то я не понял. Типа такая схема: #1 start A1.1 A1.2 #2 start A2.1 A2.2 #2 end A1.3 A1.4 - здесь, допустим, ловим ошибку и нужен ROLLBACK A1.1, A1.2, A1.3, но COMMIT A2.1, A2.2 ??? да, именно такая схема XM Итого, нужна не вложенная, а выдергиваемая транзакция? :) 1. Если блок #2 независим от результатов предшествующих операций - вынести его в начало транзакции и рулить сейвпойнтами. 2. Если блок #2 зависит от результатов предшествующих операций - как Вы представляете откат всех инструкций кроме блока #2 в этом случае??? Posted via ActualForum NNTP Server 1.3 блок№2 независим от результатов предшедствующих операций вынести его в начало не получиться, т.к. его появление зависит от действий и желаний пользователя и может произойти в любой момент, а принудить пользователя выполнять блок №2 в начале транзакции нельзя кроме того внутри блока 2 может быть блок 3 и так далее У меня похожая проблемма, отличие только в том, что блок 2 зависит от результатов блока 1 и блок 1 должен выполняться пеерд блоком 2! Как в этом случае подтвердить блок 2 и откатить блок 1?!??! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 11:57 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ru У меня похожая проблемма, отличие только в том, что блок 2 зависит от результатов блока 1 и блок 1 должен выполняться пеерд блоком 2! Как в этом случае подтвердить блок 2 и откатить блок 1?!??!наверное так же - в клиенте, посмотрев результаты блока 1, запустить второй коннект, и в нем выполнить блок2 (как отдельную транзакцию - ибо она выполняется в другом соединении), оставив себе право завершить транзакцию 1 по своему усмотрению. Если же все это должно быть еще и в автомате, - думаю это шизофрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:04 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 msa@n-e.ru У меня похожая проблемма, отличие только в том, что блок 2 зависит от результатов блока 1 и блок 1 должен выполняться пеерд блоком 2! Как в этом случае подтвердить блок 2 и откатить блок 1?!??!наверное так же - в клиенте, посмотрев результаты блока 1, запустить второй коннект, и в нем выполнить блок2 (как отдельную транзакцию - ибо она выполняется в другом соединении), оставив себе право завершить транзакцию 1 по своему усмотрению. Если же все это должно быть еще и в автомате, - думаю это шизофрения. А что значит в автомате? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:09 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 msa@n-e.ru У меня похожая проблемма, отличие только в том, что блок 2 зависит от результатов блока 1 и блок 1 должен выполняться пеерд блоком 2! Как в этом случае подтвердить блок 2 и откатить блок 1?!??!наверное так же - в клиенте, посмотрев результаты блока 1, запустить второй коннект, и в нем выполнить блок2 (как отдельную транзакцию - ибо она выполняется в другом соединении), оставив себе право завершить транзакцию 1 по своему усмотрению. Если же все это должно быть еще и в автомате, - думаю это шизофрения. Так как я во втором коннекте увижу изменеия не закрытой транзакции в первом коннекте?!?!?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:24 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ru А что значит в автомате?положим у вас есть _однозначный_ алгоритм, как по результатам 1 выполнить 2, а по результатам 2 "откатить "потом" 1 "однозначно", без вмешательства стохастических факк-торов. как это можно было бы сделать: 1 делаете в темповых таблицах, 2 - как удобно, по результатам 2 - результаты 1 либо дублируете в "постоянные", либо нет. Есть правда неудобства - если вы захотите залочить уникью в постоянных табличках на этапе 1, а в то время, когда вы делали 1 в темповых, их кто-то уже поюзал - то завершить транзакцию "подтверждением 1" в стиле копирования результатов из темповых уже не удастся. Надо как-то отдельно заботиться об этаких вещах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:25 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ru Так как я во втором коннекте увижу изменеия не закрытой транзакции в первом коннекте?!?!?!неужели не ястно, что передача идет "под столом" - т.е. через клиента? поскольку в клиенте вы видите обе транзакции, то и передавайте данные из транзакции в транзакцию через голову постгреса (ему то это запрещено). и что тут не ясно? В качестве клиента, кстати, можно смотреть и на какой-либо "третий слой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:30 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 msa@n-e.ru А что значит в автомате?положим у вас есть _однозначный_ алгоритм, как по результатам 1 выполнить 2, а по результатам 2 "откатить "потом" 1 "однозначно", без вмешательства стохастических факк-торов. как это можно было бы сделать: 1 делаете в темповых таблицах, 2 - как удобно, по результатам 2 - результаты 1 либо дублируете в "постоянные", либо нет. Есть правда неудобства - если вы захотите залочить уникью в постоянных табличках на этапе 1, а в то время, когда вы делали 1 в темповых, их кто-то уже поюзал - то завершить транзакцию "подтверждением 1" в стиле копирования результатов из темповых уже не удастся. Надо как-то отдельно заботиться об этаких вещах. Да дело в том что хотелось бы сделать так. 1. Начинаем транзакцию 2. Делаем апдейт ряда полей нескольких таблиц 3. Создаем новые записи на основе тех которые изменяли 4. Откатываем первый апдейт с сохранением создания новых записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:31 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ru Да дело в том что хотелось бы сделать так. хотеть не вредно. Некоторым не нравятся фундаментальные законы. И что? msa@n-e.ru 1. Начинаем транзакцию 2. Делаем апдейт ряда полей нескольких таблиц 3. Создаем новые записи на основе тех которые изменяли 4. Откатываем первый апдейт с сохранением создания новых записейвсе "предварительные вычисления" делайте в темповых и не порите ерундой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:35 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 msa@n-e.ru Так как я во втором коннекте увижу изменеия не закрытой транзакции в первом коннекте?!?!?!неужели не ястно, что передача идет "под столом" - т.е. через клиента? поскольку в клиенте вы видите обе транзакции, то и передавайте данные из транзакции в транзакцию через голову постгреса (ему то это запрещено). и что тут не ясно? В качестве клиента, кстати, можно смотреть и на какой-либо "третий слой". Как я буду во втором коннекте создавать записи на основе тех, которые еще не подтвердились в перваом коннекте? Что я тут должен написать? insert into table1 select * from table1 where r1=1; ...когда в первой транзакции (первый коннект) еще апдейт update table1 set r2='вася' where r1=1; не подтвердился?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:38 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 msa@n-e.ru Да дело в том что хотелось бы сделать так. хотеть не вредно. Некоторым не нравятся фундаментальные законы. И что? msa@n-e.ru 1. Начинаем транзакцию 2. Делаем апдейт ряда полей нескольких таблиц 3. Создаем новые записи на основе тех которые изменяли 4. Откатываем первый апдейт с сохранением создания новых записейвсе "предварительные вычисления" делайте в темповых и не порите ерундой. А что тут ерундового-то? И вычислений мне делать не надо никаких. Мне надо создать несколько записей в нескольктх таблицах на основе других (предварительно выполнив модификацию первых) а потом модификацию отменить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:42 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
ф сад. фсе ф сад. еще раз: 1. если не нравится ограничения вструмента - выбрось его. Или прими ограничения. 2. если не умеешь клиентом динамически шить SQL по полученным им (из другого коннекта данным) - то и обходные маневры не для тебя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:46 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 ф сад. фсе ф сад. еще раз: 1. если не нравится ограничения вструмента - выбрось его. Или прими ограничения. 2. если не умеешь клиентом динамически шить SQL по полученным им (из другого коннекта данным) - то и обходные маневры не для тебя. Так я собственно и спрашивал, есть ограничения такие или нет. По всей видимости есть. Да и выбросить я его не могу. По этой логике я вот постгресом прямо пользуюсь потому что мне очень нравиться. Что значит выброси? Нет такой возможности, как допустим в других СУБД, плохо, конечно, но не смертельно. А вы как я посмотрю прямо ГУРУ. Раз в сад рекомендуете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:51 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ruНет такой возможности, как допустим в других СУБД, плохо, расскажите пожалуста, в каких таких других субд такое возможно? msa@n-e.ruА вы как я посмотрю прямо ГУРУ. Раз в сад рекомендуете.да нет. я просто не люблю, когда сами спрашивают, а при попытке им помочь в ответ хамят. таких я просто посылаю. могу послать еще куда-нть. кстати, по серкрету: посыл не является оскорбоблением, а всего лишь пожеланием неких неудобств посылаемому, а вот определение, которое вы попытались дать - это прямое оскорбобление (наделение определямого некими качествами). Будте внимательны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 13:03 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 msa@n-e.ruНет такой возможности, как допустим в других СУБД, плохо, расскажите пожалуста, в каких таких других субд такое возможно? msa@n-e.ruА вы как я посмотрю прямо ГУРУ. Раз в сад рекомендуете.да нет. я просто не люблю, когда сами спрашивают, а при попытке им помочь в ответ хамят. таких я просто посылаю. могу послать еще куда-нть. кстати, по серкрету: посыл не является оскорбоблением, а всего лишь пожеланием неких неудобств посылаемому, а вот определение, которое вы попытались дать - это прямое оскорбобление (наделение определямого некими качествами). Будте внимательны. В оракле есть возможность создавать новые подтранзакции, которые могут сохранять или отменять изменения вне зависимости от родительской транзакции. Т .е. родительская транзакция может и откатиться , а подтранзакция сохраниться. И какое же определения я вам пытался дать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 13:07 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321 msa@n-e.ruНет такой возможности, как допустим в других СУБД, плохо, расскажите пожалуста, в каких таких других субд такое возможно? msa@n-e.ruА вы как я посмотрю прямо ГУРУ. Раз в сад рекомендуете.да нет. я просто не люблю, когда сами спрашивают, а при попытке им помочь в ответ хамят. таких я просто посылаю. могу послать еще куда-нть. кстати, по серкрету: посыл не является оскорбоблением, а всего лишь пожеланием неких неудобств посылаемому, а вот определение, которое вы попытались дать - это прямое оскорбобление (наделение определямого некими качествами). Будте внимательны. Та задача которая сейчас есть , очень просто бы решалась роллбеком внешней транзакции с сохранением внутренней. Понятно что есть масса других вариантов решения. Которыми я и воспользуюсь. Вот единственное, чт о я хотел узнать, так это то можно ли внешнюю транзакцию с сохранением внутренней. Вижу что нельзя. И сад тут нипричем!!! Или это такая помощь?? "ф сад. фсе ф сад." ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 13:09 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ruВ оракле есть возможность создавать новые подтранзакции, которые могут сохранять или отменять изменения вне зависимости от родительской транзакции. Т .е. родительская транзакция может и откатиться , а подтранзакция сохраниться. сенькаю. очень познавательно. Кажецца, правда, это называется не "подтранзакция" и не "вложенная транзакция" , а " автономная транзакция ". Именно поэтому оракловцы не понимают "вложенных транзакций" мсскл-щиков. Ибо "вложенная" - это аналог сейвпойнтов, а не "автономной". Т.е. автономная моделирует проведение ее в другом соединении, но в ней видны данные вызвавшей транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 13:35 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
кстати сказать, возможно сишники собразят, как налабать ф-ю(ии), поднимающую в себе новый сеанс постгреса, и скармливающую ему SQL строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 13:39 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
вот только с видимостью там, в оркле бишь, кааца не так, как бы вам хотелось Oracle9i Database Concepts. Autonomous TransactionsOnce invoked, an autonomous transaction is totally independent of the main transaction that called it. It does not see any of the uncommitted changes made by the main transaction and does not share any locks or resources with the main transaction. Changes made by an autonomous transaction become visible to other transactions upon commit of the autonomous transactions. ничего лишного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 13:50 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
4321вот только с видимостью там, в оркле бишь, кааца не так, как бы вам хотелось Oracle9i Database Concepts. Autonomous TransactionsOnce invoked, an autonomous transaction is totally independent of the main transaction that called it. It does not see any of the uncommitted changes made by the main transaction and does not share any locks or resources with the main transaction. Changes made by an autonomous transaction become visible to other transactions upon commit of the autonomous transactions. ничего лишного Эта полемика ни к чему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 14:42 |
|
||
|
несколько одновременных транзакций
|
|||
|---|---|---|---|
|
#18+
Есть еще вариант - если блок 1 не зависит от блока 2, а блок 2 зависит от блока 1, то данные для блока 2 можно сохранить с помощью plperl(в $_SHARED) или plpython(GD) и потом внести изменения в таблицы после коммита/роллбэка блока 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 17:12 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=323&tid=2006493]: |
0ms |
get settings: |
10ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 452ms |

| 0 / 0 |
