|
|
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
Добрый день! Подскажите пожалуйста как сделать так, чтобы инсерт который отрабатывает внутри функции не удалялся, если функция завершилась неуспешно и прошел ее rollback? p.s - вопрос возник вот почему, есть функция log(text) - которая записывает сообщения в таблицу лога. Эту функцию вставляю в тело других plpgsql процедур, нужна для логирования параметров. Но если "родительская" процедура завершается с ошибкой, то при роллбеке записи из таблицы логов тоже удаляются. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2014, 17:19:34 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
Orin, заверни инсерт, в дблинк http://www.postgresql.org/docs/9.3/static/dblink.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2014, 22:55:23 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
drsm, 1. Необходимо приимущество транзакций использовать как преимущество, а не как недостаток вашей логики, 2. Зачем что то логировать если транзакция закончилась ошибкой? для этого есть exception 3. Если сильно нужно, то лучше ловить такие вещи на уровне приложения, а не костылить. 4. Сильно сомневаюсь что dblink здесь поможет. Так и вообще, зачем гвозди забивать кувалдой:? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 00:45:05 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
Electric200, 1) видимо от недостатка логики взрослые потсоны придумали PRAGMA AUTONOMOUS_TRANSACTION 2) затем чтобы логгировать ) 3) открыть два коннекта на уровне приложения в одном делать дела, в другом писать лог. ок, попробуй сделай это на чем-нибудь асинхронном типа node.js, получатся весьма забавные сопли. 4) поможет ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 02:29:49 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
drsm, О PRAGMA AUTONOMOUS_TRANSACTION я не слышал (спасибо), по этому в таком случае конечно лучше использовать данный подход. Потому как его использование, предположительно самой логикой работы транзакций. Все другие варианты - это костыли, которых лучше избегать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 15:23:23 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
Electric200drsm, О PRAGMA AUTONOMOUS_TRANSACTION я не слышал (спасибо), по этому в таком случае конечно лучше использовать данный подход. Потому как его использование, предположительно самой логикой работы транзакций. Все другие варианты - это костыли, которых лучше избегать. PRAGMA AUTONOMOUS_TRANSACTION - чисто оракловая фича... в postgresql реализуется через костыль в виде dblink логгирование/аудит - наверное единственные разумные и допустимые применения для такого подхода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 15:31:08 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Верно, я поверхностно прочитал и не заметил что под Oracle. Ну не знаю, все равно как то оно не того)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 23:59:50 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
Electric200Maxim Boguk, Верно, я поверхностно прочитал и не заметил что под Oracle. Ну не знаю, все равно как то оно не того)) правильному танцору всё что-то не того ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 00:43:32 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
какабычнаElectric200Maxim Boguk, Верно, я поверхностно прочитал и не заметил что под Oracle. Ну не знаю, все равно как то оно не того)) правильному танцору всё что-то не того Иди, займись чем то балабол.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 11:43:55 |
|
||
|
Не откатывать инсерт при роллбеке функции
|
|||
|---|---|---|---|
|
#18+
Electric200drsm, 1. Необходимо приимущество транзакций использовать как преимущество, а не как недостаток вашей логики, 2. Зачем что то логировать если транзакция закончилась ошибкой? для этого есть exception 3. Если сильно нужно, то лучше ловить такие вещи на уровне приложения, а не костылить. 4. Сильно сомневаюсь что dblink здесь поможет. Так и вообще, зачем гвозди забивать кувалдой:? 1. к чему эти громкие фразы не понял 2. Обтыкать весь код exeption-ами конечно можно, но удобнее от этого разработка не станет. 3. Как вы предлагаете на уровне приложения ловить ошибки логики, которая реализована в хранимке? 4. судя по всему только дблинк здесь и поможет, спасибо drsm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 19:45:31 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38673108&tid=1998612]: |
0ms |
get settings: |
5ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
291ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 575ms |

| 0 / 0 |
