Using postgres 12.5 in DBA schema, this trigger is executed when the table is updated through a logical replication. Why is it necessary to name the schema for it to work? When I update the table manually, if it Works. Example. This trigger function does not work CREATE FUNCTION dba.ft_pos_sync_eco_tx() RETURNS trigger LANGUAGE 'plpgsql' COST 100 VOLATILE NOT LEAKPROOF AS $BODY$ begin INSERT INTO pos_sync_eco_rx ( id_terminales, fecha_y_hora_tx, fecha_y_hora_rx, dato, usuario, fecha_y_hora_proceso ) VALUES ( new.id_terminales, localtimestamp, localtimestamp, new.dato, new.usuario , localtimestamp ) ON CONFLICT (id_terminales) DO UPDATE SET (fecha_y_hora_tx, fecha_y_hora_rx, dato, usuario, fecha_y_hora_proceso ) = (new.fecha_y_hora_tx, localtimestamp, new.dato, new.usuario, new.fecha_y_hora_proceso ); return new; end $BODY$; This trigger function, if it works CREATE FUNCTION dba.ft_pos_sync_eco_tx() RETURNS trigger LANGUAGE 'plpgsql' COST 100 VOLATILE NOT LEAKPROOF AS $BODY$ begin INSERT INTO dba.pos_sync_eco_rx ( id_terminales, fecha_y_hora_tx, fecha_y_hora_rx, dato, usuario, fecha_y_hora_proceso ) VALUES ( new.id_terminales, localtimestamp, localtimestamp, new.dato, new.usuario , localtimestamp ) ON CONFLICT (id_terminales) DO UPDATE SET (fecha_y_hora_tx, fecha_y_hora_rx, dato, usuario, fecha_y_hora_proceso ) = (new.fecha_y_hora_tx, localtimestamp, new.dato, new.usuario, new.fecha_y_hora_proceso ); return new; end $BODY$; -- El software de antivirus Avast ha analizado este correo electrónico en busca de virus. https://www.avast.com/antivirus