@shushpanio
shushpanio

Возможно ли реализовать запуск bash по факту инсерта в БД?

Добрый день.
Никак не могу понять в какую сторону мне копать.
Есть хотелка: при записи в таблицу новой строки / апдейте имеющейся запускать тригер по которому будет вызываться bash скрипт отправляющий сообщение в чат.
Возможно ли такое реализовать в Postgres и если возможно то в какую сторону копать? Может кто сталкивался с подобным и посоветует доки по этому вопросу?
  • Вопрос задан
  • 254 просмотра
Решения вопроса 2
OrlovEvgenii
@OrlovEvgenii
golang developer / DevOps
самый джентльменский вариант это реализовать нужный вам функционал в коде проекта который отправляет insert/update в бд, для этого Вам будет достаточно повесить observer insert/update на модель связанную с нужной вам таблицей. Если такой возможности нет, то через триггер как-то так.

CREATE or REPLACE FUNCTION NotifyTelegram() RETURNS text AS '
#!/bin/bash
echo say: $1 зачем тебе все это?
' LANGUAGE plsh;


-- или AFTER
CREATE TRIGGER TriggerBefore BEFORE INSERT OR UPDATE ON table_observed
    FOR EACH ROW EXECUTE PROCEDURE NotifyTelegram();

Если есть джедаи postgres поправьте меня.

Но сама идея дергания bash из триггера выглядит не очень.
Ответ написан
@rPman
не надо ничего вызывать , и по крону не надо сканировать базу, достаточно на таблицу вызывать sql LISTEN и pg_get_notify из бакэнда.

p.s. вариант с bash в тригере плох еще тем, что он отработает даже если транзакция будет отменена по какой-либо причине.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы