#postgresql #libpqxx
#postgresql #libpqxx
Вопрос:
class receiver : public pqxx::notification_receiver
{
std::optional<std::string> status;
public:
receiver(pqxx::connection_base amp; c, const std::string amp; channel)
: pqxx::notification_receiver(c, channel) { }
void operator() (const std::string amp; payload, int pid) override
{
status = payload;
std::cout << "Received notification: " << channel() << std::endl;
};
std::optional<std::string> get() {
auto s = status;
status = std::nullopt;
return s;
}
};
Я определил класс выше и создал требуемую функцию и триггер, как показано ниже в postgresql
CREATE OR REPLACE FUNCTION notify_FN()
RETURNS trigger AS
$BODY$
BEGIN
PERFORM pg_notify('SendContactsList',
json_build_object(
'operation', 'TG_OP', 'record', row_to_json(NEW)
)::text
);
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
CREATE TRIGGER "Notify_Update"
AFTER INSERT OR DELETE OR UPDATE
ON monitoring_service.monitor_rules
FOR EACH ROW
EXECUTE PROCEDURE public.notify_FN();
Я определил объект для функции SendContactList
in, выполняемой в отдельном потоке.Каждый раз, когда печатается таблица обновления консоли Received notification: SendContactList
, могу ли я также распечатать вставленную / обновленную строку и как?