Que muñequito tan simpático.

Puedes usar:
NEW.venceultimoplan := (SELECT (date(DATE(pe.fecha) + pq.paquete) - interval '1 day') FROM pagos_empresas pe, paquetes pq WHERE pq.paqid = pe.paqid and pe.empid = NEW.empid);

De: Virginia <mavi...@gmail.com>
Para: Ayuda <pgsql-es-ayuda@postgresql.org>
Enviado: Viernes 4 de Mayo de 2012 16:29
Asunto: [pgsql-es-ayuda] triggers

Buenas tardes!!!! Quisiera me orientaran con algo...
Estoy tratando de hacer el siguiente trigger

-- Function: upd_last_paquete()

-- DROP FUNCTION upd_last_paquete();

CREATE OR REPLACE FUNCTION upd_last_paquete()
  RETURNS trigger AS
$BODY$
BEGIN        

    NEW.venceultimoplan = SELECT (date(DATE(pe.fecha) + pq.paquete) - interval '1 day') FROM pagos_empresas pe, paquetes pq WHERE pq.paqid = pe.paqid and pe.empid = NEW.empid;
    UPDATE empresas SET ultimoplan = NEW.paqid(), iniciaultimoplan = NEW.fecha, venceultimoplan = NEW.venceultimoplan WHERE empid = NEW.empid;

return NEW;

END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION upd_last_paquete() OWNER TO empleate;

-- Trigger: upd_ultimo_paquete on pagos_empresas

-- DROP TRIGGER upd_ultimo_paquete ON pagos_empresas;

CREATE TRIGGER upd_ultimo_paquete
  AFTER UPDATE
  ON pagos_empresas
  FOR EACH ROW
  EXECUTE PROCEDURE upd_last_paquete();


y me da error, no se cómo hacer para que el select me traiga el resultado de esa operación sobre el campo de otra tabla y me lo actualice sobre la tabla correspondiente.

Gracias!!!!


Responder a