Hola 

Estoy creando un trigger sobre una tabla que se llena como resultado de una 
réplica que se realiza utilizando slony1 versión 2.2.1. La tabla se actualiza 
como resultado de la réplica pero el trigger nunca se dispara. El trigger está 
puesto para que se ejecute sobre las sentencias INSERT, UPDATE y DELETE. 



Aquí les dejo la sentencia de creación del trigger 



CREATE TRIGGER tg_sync_nrol 

AFTER INSERT OR UPDATE OR DELETE 

ON _sync.nrol 

FOR EACH STATEMENT 

EXECUTE PROCEDURE _sync.ftg_sync_nrol(); 



y el código de la función que ejecuta 



CREATE OR REPLACE FUNCTION _sync.ftg_sync_nrol() 

RETURNS trigger AS 

$BODY$ 

BEGIN 

IF (TG_OP = 'INSERT') THEN 

INSERT INTO nrol (idrol, rol, description) VALUES (NEW.idrol, NEW.rol, ''); 

RETURN NEW; 

ELSIF (TG_OP = 'UPDATE') THEN 

IF OLD.idrol != NEW.idrol OR OLD.rol != NEW.rol THEN 

UPDATE nrol SET (idrol, rol) = (NEW.idrol, NEW.rol) WHERE idrol = OLD.idrol; 

END IF; 

RETURN NEW; 

ELSIF (TG_OP = 'DELETE') THEN 

DELETE FROM nrol WHERE idrol = OLD.idrol; 

RETURN OLD; 

END IF; 

RETURN NULL; 

END; 

$BODY$ 



Saludos 






________________________________________________________________________________________________
III Escuela Internacional de Invierno en la UCI del 17 al 28 de febrero del 
2014. Ver www.uci.cu

Responder a