Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не откатывать инсерт при роллбеке функции / 10 сообщений из 10, страница 1 из 1
14.06.2014, 17:19:34
    #38669369
Orin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
Добрый день!

Подскажите пожалуйста как сделать так, чтобы инсерт который отрабатывает внутри функции не удалялся, если функция завершилась неуспешно и прошел ее rollback?


p.s - вопрос возник вот почему, есть функция log(text) - которая записывает сообщения в таблицу лога. Эту функцию вставляю в тело других plpgsql процедур, нужна для логирования параметров. Но если "родительская" процедура завершается с ошибкой, то при роллбеке записи из таблицы логов тоже удаляются.


Спасибо.
...
Рейтинг: 0 / 0
14.06.2014, 22:55:23
    #38669479
drsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
Orin, заверни инсерт, в дблинк
http://www.postgresql.org/docs/9.3/static/dblink.html
...
Рейтинг: 0 / 0
18.06.2014, 00:45:05
    #38672455
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
drsm,

1. Необходимо приимущество транзакций использовать как преимущество, а не как недостаток вашей логики,
2. Зачем что то логировать если транзакция закончилась ошибкой? для этого есть exception
3. Если сильно нужно, то лучше ловить такие вещи на уровне приложения, а не костылить.
4. Сильно сомневаюсь что dblink здесь поможет. Так и вообще, зачем гвозди забивать кувалдой:?
...
Рейтинг: 0 / 0
18.06.2014, 02:29:49
    #38672476
drsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
Electric200,
1) видимо от недостатка логики взрослые потсоны придумали PRAGMA AUTONOMOUS_TRANSACTION
2) затем чтобы логгировать )
3) открыть два коннекта на уровне приложения в одном делать дела, в другом писать лог. ок, попробуй сделай это на чем-нибудь асинхронном типа node.js, получатся весьма забавные сопли.
4) поможет )
...
Рейтинг: 0 / 0
18.06.2014, 15:23:23
    #38673108
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
drsm,
О PRAGMA AUTONOMOUS_TRANSACTION я не слышал (спасибо), по этому в таком случае конечно лучше использовать данный подход. Потому как его использование, предположительно самой логикой работы транзакций. Все другие варианты - это костыли, которых лучше избегать.
...
Рейтинг: 0 / 0
18.06.2014, 15:31:08
    #38673123
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
Electric200drsm,
О PRAGMA AUTONOMOUS_TRANSACTION я не слышал (спасибо), по этому в таком случае конечно лучше использовать данный подход. Потому как его использование, предположительно самой логикой работы транзакций. Все другие варианты - это костыли, которых лучше избегать.

PRAGMA AUTONOMOUS_TRANSACTION - чисто оракловая фича...
в postgresql реализуется через костыль в виде dblink

логгирование/аудит - наверное единственные разумные и допустимые применения для такого подхода
...
Рейтинг: 0 / 0
18.06.2014, 23:59:50
    #38673713
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
Maxim Boguk,
Верно, я поверхностно прочитал и не заметил что под Oracle. Ну не знаю, все равно как то оно не того))
...
Рейтинг: 0 / 0
19.06.2014, 00:43:32
    #38673720
какабычна
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
Electric200Maxim Boguk,
Верно, я поверхностно прочитал и не заметил что под Oracle. Ну не знаю, все равно как то оно не того))
правильному танцору всё что-то не того
...
Рейтинг: 0 / 0
19.06.2014, 11:43:55
    #38674028
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
какабычнаElectric200Maxim Boguk,
Верно, я поверхностно прочитал и не заметил что под Oracle. Ну не знаю, все равно как то оно не того))
правильному танцору всё что-то не того
Иди, займись чем то балабол..
...
Рейтинг: 0 / 0
29.06.2014, 19:45:31
    #38683145
Orin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не откатывать инсерт при роллбеке функции
Electric200drsm,

1. Необходимо приимущество транзакций использовать как преимущество, а не как недостаток вашей логики,
2. Зачем что то логировать если транзакция закончилась ошибкой? для этого есть exception
3. Если сильно нужно, то лучше ловить такие вещи на уровне приложения, а не костылить.
4. Сильно сомневаюсь что dblink здесь поможет. Так и вообще, зачем гвозди забивать кувалдой:?

1. к чему эти громкие фразы не понял
2. Обтыкать весь код exeption-ами конечно можно, но удобнее от этого разработка не станет.
3. Как вы предлагаете на уровне приложения ловить ошибки логики, которая реализована в хранимке?
4. судя по всему только дблинк здесь и поможет, спасибо drsm
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не откатывать инсерт при роллбеке функции / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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