CREATE TRIGGER control_log_historico AFTER UPDATE OR DELETE ON historico FOR EACH ROW EXECUTE PROCEDURE control_log(); CREATE OR REPLACE FUNCTION control_log() RETURNS trigger AS $BODY$ DECLARE fecha_ultimo_tramite DATE; BEGIN IF (TG_NAME = 'control_log_historico') THEN IF (TG_OP = 'DELETE') THEN INSERT INTO log_movimientos( codi_registro, codi_asunto, creado, concepto_old, tabla) VALUES (old.codi_historico, old.codi_asunto, old.creado, old.concepto, TG_TABLE_NAME); ELSEIF (TG_OP = 'UPDATE') THEN INSERT INTO log_movimientos( codi_registro, codi_asunto, creado, concepto_old, concepto_new, tabla) VALUES (new.codi_historico, new.codi_asunto, old.creado, old.concepto, new.concepto, TG_TABLE_NAME); END IF; ELSEIF (TG_NAME = 'control_log_dietario') THEN IF (TG_OP = 'DELETE') THEN INSERT INTO log_movimientos( codi_registro, codi_asunto, creado, concepto_old, tabla) VALUES (old.codi_dietario, old.codi_asunto, old.creado, old.concepto, TG_TABLE_NAME); ELSEIF (TG_OP = 'UPDATE') THEN INSERT INTO log_movimientos( codi_registro, codi_asunto, creado, concepto_old, concepto_new, tabla) VALUES (new.codi_dietario, new.codi_asunto, old.creado, old.fecha || ' ' || old.concepto, new.fecha || ' ' || new.concepto, TG_TABLE_NAME); END IF; END IF; RETURN NEW; END$BODY$ LANGUAGE plpgsql VOLATILE COST 100;