У меня есть 2 БД, 1-й - это мастер-база данных, а 2-й - это реплика базы данных (только некоторые таблицы из главной БД)Я пытаюсь добавить триггер для таблицы реплик для перехвата, когда он реплицируется из основных таблиц базы данных.
Я использовал триггер для перехвата операций вставки, удаления и обновления, но, похоже, это не работает. этот триггер работает только для некоторой таблицы, которая отличается от оператора SQL. Не работает для таблиц реплик.
Есть ли способ отлова изменений таблиц реплик? Я использовал go lang и следую руководству этого поста https://coussej.github.io/2015/09/15/Listening-to-generic-JSON-notifications-from-PostgreSQL-in-Go/
я сделал эти шаги:
-- create function
CREATE OR REPLACE FUNCTION notify_event() RETURNS TRIGGER AS $$
DECLARE
data json;
notification json;
BEGIN
IF (TG_OP = 'DELETE') THEN
data = row_to_json(OLD);
ELSE
data = row_to_json(NEW);
END IF;
notification = json_build_object(
'table',TG_TABLE_NAME,
'action', TG_OP,
'data', data);
PERFORM pg_notify('events',notification::text);
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
-- create trigger
CREATE TRIGGER user_warehouse_notify_event
AFTER INSERT OR UPDATE OR DELETE ON users_warehouse_rel
FOR EACH ROW EXECUTE PROCEDURE notify_event();
-- enable replica trigger
ALTER TABLE users_warehouse_rel ENABLE REPLICA TRIGGER user_warehouse_notify_event
это все еще не работает