-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Trigger de DELETE: td_mdp_personas_documentos
-- Tabla: mdp_personas_documentos
-- Version: 3.0.0
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- DROP FUNCTION ftdb_mdp_personas_documentos ();
CREATE OR REPLACE FUNCTION ftdb_mdp_personas_documentos () RETURNS trigger AS 
$BODY$
DECLARE 
  cnt smallint;   
  _documento integer;

BEGIN

   -- Cambio el documento principal de la persona
   SELECT COUNT(*) INTO cnt
     FROM mdp_personas
     WHERE persona = OLD.persona
       AND documento_principal = OLD.documento;
   
   IF cnt > 0 THEN
     _documento := NULL;
     -- Recupero el documento que queda como principal.
     SELECT documento INTO _documento
       FROM mdp_personas_documentos, 
            mdp_tipo_documento
       WHERE persona = OLD.persona
         AND documento <> OLD.documento
         AND mdp_personas_documentos.tipo_documento = mdp_tipo_documento.tipo_documento
       ORDER BY mdp_tipo_documento.orden_principal ASC
       LIMIT 1;
         
      -- Actualizo el documento principal de la persona.
      UPDATE mdp_personas 
         SET documento_principal = _documento
       WHERE persona = OLD.persona;
       
   END IF;

   RETURN OLD;
END;
$BODY$
LANGUAGE 'plpgsql';


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Trigger de DELETE sobre mdp_personas_documentos
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- DROP TRIGGER tdb_mdp_personas_documentos ON mdp_personas_documentos RESTRICT;
CREATE TRIGGER tdb_mdp_personas_documentos
       BEFORE DELETE ON mdp_personas_documentos 
       FOR EACH ROW EXECUTE PROCEDURE ftdb_mdp_personas_documentos();

