Triggers 当其他表中的数据更新时,触发更新表

Triggers 当其他表中的数据更新时,触发更新表,triggers,replication,postgresql-9.3,Triggers,Replication,Postgresql 9.3,我有一个场景,我的表(表a)从另一台服务器上的另一个表(表B)复制数据 我想在表a上写一个触发器,以便它在第三个表(表C)中插入一个值/行,该表与表a位于同一服务器上 我试过这样的扳机: 功能: create or replace function drs_function1() returns trigger as $$ begin if(TG_OP = 'INSERT') then insert into Table_C values (NEW.loginname,'NEW'); retu

我有一个场景,我的表(表a)从另一台服务器上的另一个表(表B)复制数据

我想在表a上写一个触发器,以便它在第三个表(表C)中插入一个值/行,该表与表a位于同一服务器上

我试过这样的扳机:

功能:

create or replace function drs_function1() returns trigger as $$
begin

if(TG_OP = 'INSERT') then
insert into Table_C values (NEW.loginname,'NEW');
return NEW;
elsif (TG_OP = 'DELETE') then
insert into Table_C values (OLD.loginname,'DELETED');
return OLD;
elsif(TG_OP = 'UPDATE') then
insert into Table_C values (NEW.loginname,'NEW');
return NEW;
end if;
end;
$$ language plpgsql;
create trigger trigger5 after insert or update or delete on Table_A for each row execute procedure drs_function1();
触发器:

create or replace function drs_function1() returns trigger as $$
begin

if(TG_OP = 'INSERT') then
insert into Table_C values (NEW.loginname,'NEW');
return NEW;
elsif (TG_OP = 'DELETE') then
insert into Table_C values (OLD.loginname,'DELETED');
return OLD;
elsif(TG_OP = 'UPDATE') then
insert into Table_C values (NEW.loginname,'NEW');
return NEW;
end if;
end;
$$ language plpgsql;
create trigger trigger5 after insert or update or delete on Table_A for each row execute procedure drs_function1();
如果我在表_a上手动启动insert/update/delete查询,但当数据通过表_B中的复制馈送时,触发器不会启动,那么这样做很好

系统每5分钟将表_B与表_A同步一次

因此,如果我们更改表_B中的数据,同步将把这些数据放在表_A中,触发器将在该点触发,以在表_C中插入数据

如果有任何帮助,我们将不胜感激


谢谢。

具体是如何复制的?用于复制的工具/应用程序/系统/配置是什么?这是一个重要的细节…谢谢克雷格的回复。它是使用symmetricDS进行复制的。好的,基于行的逻辑复制。PostgreSQL支持对复制行触发的触发器。有关alter table和alter,请参阅手册trigger@CraigRinger你在这里有什么帮助?我希望触发器在另一个表(在本例中为表C)中插入行。我们如何捕获通过触发器中的复制更改数据的事件?