Для Postgresql --- и в конечном итоге Sybase ADS --- у меня есть таблицы, которые будут реплицироваться с использованием самодельных триггеров.Триггеры имеют функцию, которая должна записывать информацию об изменениях INSERT UPDATE DELETE, которая включает в себя операцию I / U / D и идентификатор строки, которая изменилась.Я использую тестовые таблицы со столбцом имени и идентификатором с автоматическим увеличением для проверки двунаправленной репликации.
Если я сделаю вставку в таблицу NAME, например, добавив «JOHN» с автоматическим идентификатором «1», яв состоянии вставить это значение идентификатора и даже, возможно, 'JOHN' в таблицу журнала?Я смотрю на параметры OLD.ID или NEW.ID, но не знаю, как это работает.Мой код триггера / функции:
CREATE OR REPLACE FUNCTION Insert() RETURNS TRIGGER AS $ReplInsert$
BEGIN
IF (TG_OP = 'DELETE') THEN
INSERT INTO "log" ("Operation","ID","NAME")
VALUES ('DELETE', OLD.ID, OLD.NAME);
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO "log" ("Operation","ID","NAME")
VALUES ('UPDATE', NEW.ID ,NEW.NAME);
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO "log" ("Operation","ID","NAME")
VALUES ('UPDATE', NEW.ID , NEW.NAME);
RETURN NEW;
END IF;
RETURN NULL;
END;
$ReplInsert$ LANGUAGE plpgsql;
CREATE TRIGGER logTrg
AFTER INSERT OR UPDATE OR DELETE ON "FIRST_NAME"
FOR EACH ROW EXECUTE PROCEDURE Insert();
Это в конечном итоге для двунаправленной репликации с использованием триггеров.Спасибо за любые соображения или рекомендации.Я буду редактировать по мере необходимости.