powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / несколько одновременных транзакций
25 сообщений из 33, страница 1 из 2
несколько одновременных транзакций
    #33298588
джанкер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выполняется блок инструкций №1 в транзакции
и гдето внутри этого блока выполнится блок инструкций №2
так вот нужна возможность отката всех инструкций кроме инструкций блока №2
сэйвпоинты как я понял здесь не помогут
вложенные транзакции не допустимы
единственный выход это создание второй сесси для блока №2 чтоли?
или есть другие варианты решения данной проблемы?
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33298694
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
джанкер 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
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33298729
джанкер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 и так далее
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33298828
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
джанкер блок№2 независим
его появление зависит от действий и желаний пользователя(транзакция (не на чтение - т.е. некий снапшот, а пишущая) болтающая с юзером, это имхо плохо.

Но всё таки: "тр. 2 от 1 не зависит. - Сталобыть это отдельные транзакции. Просто откройте пользователю второй сеанс (коннект, или что там у вас в клиенте) а в нем - независимо запустите транзакцию 2.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33299146
джанкер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 джанкер блок№2 независим
его появление зависит от действий и желаний пользователя(транзакция (не на чтение - т.е. некий снапшот, а пишущая) болтающая с юзером, это имхо плохо.

Но всё таки: "тр. 2 от 1 не зависит. - Сталобыть это отдельные транзакции. Просто откройте пользователю второй сеанс (коннект, или что там у вас в клиенте) а в нем - независимо запустите транзакцию 2.


ну да
стало быть так и сделаю :))
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645717
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
джанкер 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?!??!
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645747
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msa@n-e.ru У меня похожая проблемма, отличие только в том, что блок 2 зависит от результатов блока 1 и блок 1 должен выполняться пеерд блоком 2! Как в этом случае подтвердить блок 2 и откатить блок 1?!??!наверное так же - в клиенте, посмотрев результаты блока 1, запустить второй коннект, и в нем выполнить блок2 (как отдельную транзакцию - ибо она выполняется в другом соединении), оставив себе право завершить транзакцию 1 по своему усмотрению.

Если же все это должно быть еще и в автомате, - думаю это шизофрения.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645777
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 msa@n-e.ru У меня похожая проблемма, отличие только в том, что блок 2 зависит от результатов блока 1 и блок 1 должен выполняться пеерд блоком 2! Как в этом случае подтвердить блок 2 и откатить блок 1?!??!наверное так же - в клиенте, посмотрев результаты блока 1, запустить второй коннект, и в нем выполнить блок2 (как отдельную транзакцию - ибо она выполняется в другом соединении), оставив себе право завершить транзакцию 1 по своему усмотрению.

Если же все это должно быть еще и в автомате, - думаю это шизофрения.

А что значит в автомате?
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645844
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 msa@n-e.ru У меня похожая проблемма, отличие только в том, что блок 2 зависит от результатов блока 1 и блок 1 должен выполняться пеерд блоком 2! Как в этом случае подтвердить блок 2 и откатить блок 1?!??!наверное так же - в клиенте, посмотрев результаты блока 1, запустить второй коннект, и в нем выполнить блок2 (как отдельную транзакцию - ибо она выполняется в другом соединении), оставив себе право завершить транзакцию 1 по своему усмотрению.

Если же все это должно быть еще и в автомате, - думаю это шизофрения.

Так как я во втором коннекте увижу изменеия не закрытой транзакции в первом коннекте?!?!?!
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645850
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msa@n-e.ru А что значит в автомате?положим у вас есть _однозначный_ алгоритм, как по результатам 1 выполнить 2, а по результатам 2 "откатить "потом" 1 "однозначно", без вмешательства стохастических факк-торов.

как это можно было бы сделать:
1 делаете в темповых таблицах, 2 - как удобно, по результатам 2 - результаты 1 либо дублируете в "постоянные", либо нет. Есть правда неудобства - если вы захотите залочить уникью в постоянных табличках на этапе 1, а в то время, когда вы делали 1 в темповых, их кто-то уже поюзал - то завершить транзакцию "подтверждением 1" в стиле копирования результатов из темповых уже не удастся. Надо как-то отдельно заботиться об этаких вещах.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645869
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msa@n-e.ru Так как я во втором коннекте увижу изменеия не закрытой транзакции в первом коннекте?!?!?!неужели не ястно, что передача идет "под столом" - т.е. через клиента? поскольку в клиенте вы видите обе транзакции, то и передавайте данные из транзакции в транзакцию через голову постгреса (ему то это запрещено). и что тут не ясно? В качестве клиента, кстати, можно смотреть и на какой-либо "третий слой".
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645875
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 msa@n-e.ru А что значит в автомате?положим у вас есть _однозначный_ алгоритм, как по результатам 1 выполнить 2, а по результатам 2 "откатить "потом" 1 "однозначно", без вмешательства стохастических факк-торов.

как это можно было бы сделать:
1 делаете в темповых таблицах, 2 - как удобно, по результатам 2 - результаты 1 либо дублируете в "постоянные", либо нет. Есть правда неудобства - если вы захотите залочить уникью в постоянных табличках на этапе 1, а в то время, когда вы делали 1 в темповых, их кто-то уже поюзал - то завершить транзакцию "подтверждением 1" в стиле копирования результатов из темповых уже не удастся. Надо как-то отдельно заботиться об этаких вещах.

Да дело в том что хотелось бы сделать так.
1. Начинаем транзакцию
2. Делаем апдейт ряда полей нескольких таблиц
3. Создаем новые записи на основе тех которые изменяли
4. Откатываем первый апдейт с сохранением создания новых записей
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645895
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msa@n-e.ru Да дело в том что хотелось бы сделать так.
хотеть не вредно. Некоторым не нравятся фундаментальные законы. И что?
msa@n-e.ru 1. Начинаем транзакцию
2. Делаем апдейт ряда полей нескольких таблиц
3. Создаем новые записи на основе тех которые изменяли
4. Откатываем первый апдейт с сохранением создания новых записейвсе "предварительные вычисления" делайте в темповых и не порите ерундой.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645911
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 msa@n-e.ru Так как я во втором коннекте увижу изменеия не закрытой транзакции в первом коннекте?!?!?!неужели не ястно, что передача идет "под столом" - т.е. через клиента? поскольку в клиенте вы видите обе транзакции, то и передавайте данные из транзакции в транзакцию через голову постгреса (ему то это запрещено). и что тут не ясно? В качестве клиента, кстати, можно смотреть и на какой-либо "третий слой".

Как я буду во втором коннекте создавать записи на основе тех, которые еще не подтвердились в перваом коннекте? Что я тут должен написать?
insert into table1 select * from table1 where r1=1;

...когда в первой транзакции (первый коннект) еще апдейт update table1 set r2='вася' where r1=1; не подтвердился??
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645923
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 msa@n-e.ru Да дело в том что хотелось бы сделать так.
хотеть не вредно. Некоторым не нравятся фундаментальные законы. И что?
msa@n-e.ru 1. Начинаем транзакцию
2. Делаем апдейт ряда полей нескольких таблиц
3. Создаем новые записи на основе тех которые изменяли
4. Откатываем первый апдейт с сохранением создания новых записейвсе "предварительные вычисления" делайте в темповых и не порите ерундой.

А что тут ерундового-то? И вычислений мне делать не надо никаких. Мне надо создать несколько записей в нескольктх таблицах на основе других (предварительно выполнив модификацию первых) а потом модификацию отменить
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645943
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ф сад. фсе ф сад.

еще раз:
1. если не нравится ограничения вструмента - выбрось его. Или прими ограничения.
2. если не умеешь клиентом динамически шить SQL по полученным им (из другого коннекта данным) - то и обходные маневры не для тебя.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33645961
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 ф сад. фсе ф сад.

еще раз:
1. если не нравится ограничения вструмента - выбрось его. Или прими ограничения.
2. если не умеешь клиентом динамически шить SQL по полученным им (из другого коннекта данным) - то и обходные маневры не для тебя.

Так я собственно и спрашивал, есть ограничения такие или нет. По всей видимости есть. Да и выбросить я его не могу. По этой логике я вот постгресом прямо пользуюсь потому что мне очень нравиться. Что значит выброси? Нет такой возможности, как допустим в других СУБД, плохо, конечно, но не смертельно. А вы как я посмотрю прямо ГУРУ. Раз в сад рекомендуете.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33646015
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msa@n-e.ruНет такой возможности, как допустим в других СУБД, плохо, расскажите пожалуста, в каких таких других субд такое возможно?
msa@n-e.ruА вы как я посмотрю прямо ГУРУ. Раз в сад рекомендуете.да нет. я просто не люблю, когда сами спрашивают, а при попытке им помочь в ответ хамят. таких я просто посылаю. могу послать еще куда-нть.

кстати, по серкрету:
посыл не является оскорбоблением, а всего лишь пожеланием неких неудобств посылаемому, а вот определение, которое вы попытались дать - это прямое оскорбобление (наделение определямого некими качествами). Будте внимательны.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33646031
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 msa@n-e.ruНет такой возможности, как допустим в других СУБД, плохо, расскажите пожалуста, в каких таких других субд такое возможно?
msa@n-e.ruА вы как я посмотрю прямо ГУРУ. Раз в сад рекомендуете.да нет. я просто не люблю, когда сами спрашивают, а при попытке им помочь в ответ хамят. таких я просто посылаю. могу послать еще куда-нть.

кстати, по серкрету:
посыл не является оскорбоблением, а всего лишь пожеланием неких неудобств посылаемому, а вот определение, которое вы попытались дать - это прямое оскорбобление (наделение определямого некими качествами). Будте внимательны.

В оракле есть возможность создавать новые подтранзакции, которые могут сохранять или отменять изменения вне зависимости от родительской транзакции. Т .е. родительская транзакция может и откатиться , а подтранзакция сохраниться.

И какое же определения я вам пытался дать?
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33646037
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321 msa@n-e.ruНет такой возможности, как допустим в других СУБД, плохо, расскажите пожалуста, в каких таких других субд такое возможно?
msa@n-e.ruА вы как я посмотрю прямо ГУРУ. Раз в сад рекомендуете.да нет. я просто не люблю, когда сами спрашивают, а при попытке им помочь в ответ хамят. таких я просто посылаю. могу послать еще куда-нть.

кстати, по серкрету:
посыл не является оскорбоблением, а всего лишь пожеланием неких неудобств посылаемому, а вот определение, которое вы попытались дать - это прямое оскорбобление (наделение определямого некими качествами). Будте внимательны.

Та задача которая сейчас есть , очень просто бы решалась роллбеком внешней транзакции с сохранением внутренней. Понятно что есть масса других вариантов решения. Которыми я и воспользуюсь. Вот единственное, чт о я хотел узнать, так это то можно ли внешнюю транзакцию с сохранением внутренней. Вижу что нельзя. И сад тут нипричем!!!

Или это такая помощь?? "ф сад. фсе ф сад." ?!
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33646132
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msa@n-e.ruВ оракле есть возможность создавать новые подтранзакции, которые могут сохранять или отменять изменения вне зависимости от родительской транзакции. Т .е. родительская транзакция может и откатиться , а подтранзакция сохраниться.
сенькаю.
очень познавательно.
Кажецца, правда, это называется не "подтранзакция" и не "вложенная транзакция" , а " автономная транзакция ". Именно поэтому оракловцы не понимают "вложенных транзакций" мсскл-щиков. Ибо "вложенная" - это аналог сейвпойнтов, а не "автономной".
Т.е. автономная моделирует проведение ее в другом соединении, но в ней видны данные вызвавшей транзакции.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33646149
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати сказать, возможно сишники собразят, как налабать ф-ю(ии), поднимающую в себе новый сеанс постгреса, и скармливающую ему SQL строку.
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33646180
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.


ничего лишного
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33646405
msa@n-e.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.


ничего лишного

Эта полемика ни к чему!
...
Рейтинг: 0 / 0
несколько одновременных транзакций
    #33647078
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще вариант - если блок 1 не зависит от блока 2, а блок 2 зависит от блока 1, то данные для блока 2 можно сохранить с помощью plperl(в $_SHARED) или plpython(GD) и потом внести изменения в таблицы после коммита/роллбэка блока 1.
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / несколько одновременных транзакций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]