-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- 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();