#ifdef BEZ // 03-11-2000 PF /* $Revision$ * $Id$ */ CREATE_TRIGGER(bez_t_bez_afspraak_B_I) BEFORE INSERT ON bez_afspraak FOR EACH ROW BEGIN UPDATE_PRIMARY_KEY(bez_afspraak_key,bez_s_bez_afspraak_key); END; / CREATE_TRIGGER(bez_t_bez_afspraak_B_IU) BEFORE INSERT OR UPDATE ON bez_afspraak FOR EACH ROW BEGIN IF sys_context('USERENV', 'ACTION') = 'ANONYMIZE' OR sys_context('USERENV', 'ACTION') = 'DBUPGRADE' THEN RETURN; END IF; IF :new.bez_afspraak_contact_key IS NULL AND :new.prs_perslid_key IS NOT NULL THEN :new.bez_afspraak_contact_key := :new.prs_perslid_key; END IF; IF :new.bez_afspraak_host_key IS NULL AND :new.bez_afspraak_gastheer IS NULL THEN BEGIN IF fac.getsetting ('vis_afspraak_host_uses_keys') = 1 THEN :new.bez_afspraak_host_key := :new.bez_afspraak_contact_key; ELSE BEGIN SELECT SUBSTR(prs_perslid_naam_full,1,50) INTO :new.bez_afspraak_gastheer FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key=:new.bez_afspraak_contact_key; EXCEPTION WHEN OTHERS THEN :new.bez_afspraak_gastheer := '*'; END; END IF; END; END IF; IF :new.bez_afspraak_host_key IS NOT NULL THEN SELECT SUBSTR(prs_perslid_naam_full,1,50) INTO :new.bez_afspraak_gastheer FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key=:new.bez_afspraak_host_key; END IF; IF :new.alg_onrgoed_keys IS NOT NULL THEN BEGIN SELECT SUBSTR (alg_plaatsaanduiding, 1, 30) INTO :NEW.bez_afspraak_ruimte FROM alg_v_plaatsaanduiding_all WHERE alg_onroerendgoed_keys = :NEW.alg_onrgoed_keys AND alg_onroerendgoed_type <> 'L'; EXCEPTION WHEN OTHERS THEN :NEW.bez_afspraak_ruimte := SUBSTR ('*' || :NEW.bez_afspraak_ruimte, 1, 30); END; END IF; END; / CREATE_TRIGGER(bez_t_bez_afspraak_d) AFTER DELETE ON bez_afspraak FOR EACH ROW BEGIN DELETE FROM bez_bezoekers WHERE bez_afspraak_key = :OLD.bez_afspraak_key; END; / CREATE_TRIGGER(bez_t_bez_bezoekers_B_I) BEFORE INSERT ON bez_bezoekers FOR EACH ROW BEGIN UPDATE_PRIMARY_KEY(bez_bezoekers_key,bez_s_bez_bezoekers_key); END; / CREATE_TRIGGER(bez_t_bez_actie_groep_B_I) BEFORE INSERT ON bez_actie_groep FOR EACH ROW BEGIN UPDATE_PRIMARY_KEY(bez_actie_groep_key, bez_s_bez_actie_groep_key); END; / CREATE_TRIGGER(bez_t_bez_actie_B_IU) BEFORE INSERT OR UPDATE ON bez_actie FOR EACH ROW BEGIN UPDATE_PRIMARY_KEY(bez_actie_key,bez_s_bez_actie_key); END; / CREATE_TRIGGER(bez_t_notificatie_afspraak_d) AFTER DELETE ON bez_afspraak FOR EACH ROW BEGIN -- Alle notificaties verwijderen van de "afspraak" xmlnode die behoren bij de verwijderde afspraak. fac.clrnotifications_xmlnode('afspraak', :OLD.bez_afspraak_key); -- Tracking verwijderen die niet weg gaat als de afspraak wordt verwijderd. fac.clrtracking_xmlnode('afspraak', :OLD.bez_afspraak_key); END; / CREATE_TRIGGER(bez_t_notificatie_bezoekers_d) AFTER DELETE ON bez_bezoekers FOR EACH ROW BEGIN -- Alle notificaties verwijderen van de "bezoeker" xmlnode die behoren bij de verwijderde bezoeker. fac.clrnotifications_xmlnode('bezoeker', :OLD.bez_bezoekers_key); -- Tracking verwijderen die niet weg gaat als de bezoeker wordt verwijderd. fac.clrtracking_xmlnode('bezoeker', :OLD.bez_bezoekers_key); END; / CREATE_TRIGGER(bez_t_bez_kenmerk_b_iu) BEFORE INSERT OR UPDATE ON bez_kenmerk FOR EACH ROW BEGIN UPDATE_PRIMARY_KEY(bez_kenmerk_key, bez_s_bez_kenmerk_key); UPDATE_UPPER(bez_kenmerk_omschrijving, bez_kenmerk_upper, bez_kenmerk); UPDATE_UPPER(bez_kenmerk_code, bez_kenmerk_code, bez_kenmerk); IF (:new.bez_kenmerk_verwijder IS NOT NULL AND :old.bez_kenmerk_verwijder IS NULL AND :new.bez_kenmerk_systeem = 1) THEN raise_application_error(-20000, 'ALG_M238'); END IF; IF (:new.bez_kenmerk_kenmerktype IN ('C','N')) AND :new.bez_kenmerk_lengte IS NULL THEN raise_application_error(-20000, 'ALG_C_ALG_KENMERK_LENGTE'); END IF; IF :new.bez_kenmerk_kenmerktype = 'N' AND :new.bez_kenmerk_lengte > 20 THEN :new.bez_kenmerk_lengte := 20; END IF; IF :new.bez_kenmerk_kenmerktype = 'N' AND :old.bez_kenmerk_key IS NOT NULL THEN -- An existing property of type N IF :old.bez_kenmerk_nmin <> :new.bez_kenmerk_nmin OR (:old.bez_kenmerk_nmin IS NULL AND :new.bez_kenmerk_nmin IS NOT NULL) THEN DECLARE Dummy CHAR; BEGIN SELECT 'X' INTO Dummy FROM bez_kenmerkwaarde WHERE FAC.SAFE_TO_NUMBER(bez_kenmerkwaarde_waarde) < :new.bez_kenmerk_nmin AND bez_kenmerk_key = :old.bez_kenmerk_key; raise_application_error(-20000, 'BEZ_C_BEZ_KENMERK_MIN'); EXCEPTION WHEN NO_DATA_FOUND THEN NULL; WHEN TOO_MANY_ROWS THEN BEGIN raise_application_error(-20000, 'BEZ_C_BEZ_KENMERK_MIN'); END; END; END IF; IF :old.bez_kenmerk_nmax <> :new.bez_kenmerk_nmax OR (:old.bez_kenmerk_nmax IS NULL AND :new.bez_kenmerk_nmax IS NOT NULL) THEN DECLARE Dummy CHAR; BEGIN SELECT 'X' INTO Dummy FROM bez_kenmerkwaarde WHERE FAC.SAFE_TO_NUMBER(bez_kenmerkwaarde_waarde) > :new.bez_kenmerk_nmax AND bez_kenmerk_key = :old.bez_kenmerk_key; raise_application_error(-20000, 'BEZ_C_BEZ_KENMERK_MAX'); EXCEPTION WHEN NO_DATA_FOUND THEN NULL; WHEN TOO_MANY_ROWS THEN BEGIN raise_application_error(-20000, 'BEZ_C_BEZ_KENMERK_MIN'); END; END; END IF; END IF; UPDATE_AANMAAKDATUM(bez_kenmerk, bez_kenmerk_aanmaak); END; / CREATE_TRIGGER(bez_t_bez_kenmerkwaarde_b_iu) BEFORE INSERT OR UPDATE ON bez_kenmerkwaarde FOR EACH ROW BEGIN UPDATE_AANMAAKDATUM(bez_kenmerkwaarde, bez_kenmerkwaarde_aanmaak); /* ** Controleer eerst of de ingevulde waarde goed is. */ IF (:new.bez_kenmerkwaarde_waarde <> :old.bez_kenmerkwaarde_waarde OR :old.bez_kenmerkwaarde_waarde IS NULL OR :new.bez_kenmerkwaarde_waarde IS NULL) AND :new.bez_bezoekers_key IS NOT NULL THEN DECLARE KenmerkOmschr bez_kenmerk.bez_kenmerk_omschrijving%TYPE; KenmerkType bez_kenmerk.bez_kenmerk_kenmerktype%TYPE; KenmerkLengte bez_kenmerk.bez_kenmerk_lengte%TYPE; KenmerkDec bez_kenmerk.bez_kenmerk_dec%TYPE; KenmerkNMin bez_kenmerk.bez_kenmerk_nmin%TYPE; KenmerkNMax bez_kenmerk.bez_kenmerk_nmax%TYPE; NumberWaarde NUMBER(25,5); FormatMask VARCHAR2(60); KenmerkWaarde bez_kenmerkwaarde.bez_kenmerkwaarde_waarde%TYPE; BEGIN KenmerkWaarde := :new.bez_kenmerkwaarde_waarde; BEGIN SELECT bez_kenmerk_omschrijving , bez_kenmerk_kenmerktype , bez_kenmerk_lengte , bez_kenmerk_dec , bez_kenmerk_nmin , bez_kenmerk_nmax INTO KenmerkOmschr , KenmerkType , KenmerkLengte , KenmerkDec , KenmerkNMin , KenmerkNMax FROM bez_kenmerk WHERE bez_kenmerk_key = :new.bez_kenmerk_key; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error(-20000,'INS_R_INS_KENMERK_KEY1'); END; /* Kijk welk KenmerkType gebruikt wordt. ** Aan de hand daarvan moet een controle uitgevoerd worden. **/ IF KenmerkType = 'C' /* ** Char */ THEN /* ** Controleer of de lengte te groot of goed is */ IF LENGTH(KenmerkWaarde) > KenmerkLengte THEN APPLICATION_ERROR_GOTO(-20004, 'ALG_M232,'|| KenmerkOmschr ||',' || TO_CHAR(KenmerkLengte)); END IF; ELSIF KenmerkType = 'N' /* ** Number */ THEN /* ** Controleer of er een numerieke waarde ingevuld is */ IF KenmerkDec IS NULL OR KenmerkDec = 0 THEN FormatMask := RPAD('9', KenmerkLengte, '9'); ELSE FormatMask := RPAD('9', KenmerkLengte - KenmerkDec, '9') ||'D'||RPAD('9', KenmerkDec, '9'); END IF; /* ** Controleer of er een numerieke waarde ingevuld is */ BEGIN NumberWaarde := TO_NUMBER(KenmerkWaarde); EXCEPTION WHEN OTHERS THEN FormatMask := REPLACE(FormatMask, '9', '#'); FormatMask := REPLACE(FormatMask, '0', '#'); FormatMask := REPLACE(FormatMask, 'D', '.'); APPLICATION_ERROR_GOTO(-20004,'ALG_M233,'|| KenmerkOmschr ||',' || FormatMask); END; /* ** Controleer of de waarde binnen NMin en NMax ligt */ IF ( (KenmerkNMin IS NOT NULL AND NumberWaarde < KenmerkNMin) OR (KenmerkNMax IS NOT NULL AND NumberWaarde > KenmerkNMax)) THEN APPLICATION_ERROR_GOTO(-20004, 'ALG_M234,'|| KenmerkOmschr ||',' || TO_CHAR(KenmerkNMin)||',' || TO_CHAR(KenmerkNMax)); ELSE /* ** Controleer of de waarde aan het formaat voldoet */ KenmerkWaarde := LTRIM(NUMBER_TO_CHAR(NumberWaarde, FormatMask)); IF INSTR2(KenmerkWaarde, '#') <> 0 THEN FormatMask := REPLACE(FormatMask, '9', '#'); FormatMask := REPLACE(FormatMask, '0', '#'); FormatMask := REPLACE(FormatMask, 'D', '.'); APPLICATION_ERROR_GOTO(-20004,'ALG_M233,'|| KenmerkOmschr ||',' || FormatMask); END IF; END IF; /* ** Zet de geconverteerde waarde terug */ :new.bez_kenmerkwaarde_waarde := KenmerkWaarde; ELSIF KenmerkType = 'D' /* ** Datum */ THEN KenmerkWaarde := DATE_TO_CHAR(_TO_DATE2(KenmerkWaarde,'DD-MM-YY'),'DD-MM-YYYY'); /* ** Zet de geconverteerde waarde terug */ :new.bez_kenmerkwaarde_waarde := KenmerkWaarde; END IF; END; UPDATE_PRIMARY_KEY(bez_kenmerkwaarde_key, bez_s_bez_kenmerkwaarde_key); END IF; END; / REGISTERRUN('$Id$') #endif // BEZ