Могу ли я выполнить вызов скручиваемости от Postgres Trigger
-
28-09-2019 - |
Вопрос
Я должен создать вызов процесса на поле (ы) БД, являющийся определенным состоянием. Я слышал, вы можете выполнить вызов скручиваемости с помощью Trigger DB, но Google не достаточно добрый, чтобы вернуть все, что я могу использовать.
Так что я думаю, мой вопрос - три части:
- Это может быть сделано?
- Ссылка?
- Альтернативное решение?
Рабочий процесс:
Поле БД обновляется со статусом, необходимо отключить скрипт / запрос / процесс, который запускается следующий шаг в моем рабочем потоке (это сценарий PHP), который будет вытащить записанную в БД и обрабатывать другой шаг, затем обновить БД с результаты, достижения.
Решение
Вы не должны использовать триггеры для этого, как триггерные блоки с транзакциями, чтобы она сделала вашу базу данных очень медленно. Также вам нужно будет установить небезопасный язык для Postgres - PL / SH, PL / Perl, PL / Python или другой.
Для этой проблемы есть 2 лучших решения:
есть процесс, который подключается к базе данных и СЛУШАТЬs for. УВЕДОМЛЯТЬ События, созданные вашим триггером - это будет работать мгновенно;
Периодически проверяйте новые данные, используя, например, скрипт CRON - это будет работать с задержкой.
Другие советы
Если вы можете вызвать скрипт оболочки,http://plsh.projects.postgresql.org/Вы можете назвать локон.
Но я получаю жуткое чувство о подходе ...
- Если удаленный сервер выходит в автономный режим, несоответствие данных ??
Альтернатива:
Я бы не поставил деловую логику в триггерах, только настраиваемые ограничения или денормализацию.
Делайте то, что нужно делать с средним уровнем, либо хранимым процедурами.
С уважением, // t
Я думаю, что вы ищете, это триггер в Postgres, которые будут запускать тренировочный скрипт. Триггеры объяснены в Документация, Синтаксис для добавления нового триггера объясняется здесь. Отказ Тип триггера, который вы ищете, кажется, на триггере обновления после обновления. Насколько я знаю, сценарий, который вы запустите, придется проверить, является ли поле необходимым статусом, поскольку Postgres всегда будет запустить триггер.