PostgreSQL: как выполнить триггер вставки, не задерживая ответ вставки? - PullRequest
0 голосов
/ 02 февраля 2010

Кто-нибудь знает, как настроить триггер вставки, чтобы при выполнении вставки из моего приложения данные вставлялись и возвращались postgres даже до того, как триггер завершит выполнение?

Ответы [ 2 ]

6 голосов
/ 02 февраля 2010

Нет встроенной поддержки для этого; вам придется что-то взломать. Варианты включают в себя:

  • Напишите триггер на C, Perl или Python и запустите отдельный процесс для выполнения желаемых действий. Это может быть сложно и, возможно, немного опасно для вашей системы баз данных, и это работает, только если то, что вы хотите сделать, находится за пределами базы данных.

  • Напишите облегченную триггерную функцию, которая только записывает запись в журнал или таблицу задач, и имеет отдельное задание или демон, который просматривает эту таблицу по своему собственному расписанию и выполняет вещи оттуда. Примерно так работает Слони.

3 голосов
/ 02 февраля 2010

Вопрос: зачем тебе это? Триггеры должны быть быстрыми. Если вам нужно сделать что-то сложное, напишите триггер, который отправит уведомление некоторому демону, который выполняет сложную часть - например, с помощью функции LISTEN / NOTIFY в PostgreSQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...