diff --git a/BEZ/BEZ_TRI.SRC b/BEZ/BEZ_TRI.SRC index f378443e..3fbbba82 100644 --- a/BEZ/BEZ_TRI.SRC +++ b/BEZ/BEZ_TRI.SRC @@ -3,14 +3,22 @@ * $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 -DECLARE dummy NUMBER; BEGIN - UPDATE_PRIMARY_KEY(bez_afspraak_key,bez_s_bez_afspraak_key); - - dummy := :new.bez_afspraak_key; + 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; @@ -62,8 +70,8 @@ BEGIN END; / -CREATE_TRIGGER(bez_t_bez_bezoekers_B_IU) -BEFORE INSERT OR UPDATE ON bez_bezoekers +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); diff --git a/FAC/FAC_PACANO.SRC b/FAC/FAC_PACANO.SRC index bfe014df..6d314c56 100644 --- a/FAC/FAC_PACANO.SRC +++ b/FAC/FAC_PACANO.SRC @@ -329,7 +329,7 @@ CREATE OR REPLACE PACKAGE BODY ano AS THEN -- Anonimiseer alle afspraken. -- Door de trigger in de update wordt automatische de naam van de host in de gastheer geplakt. - -- Daardoor wordt de lcl "Ganonimiseerd" in vele gevallen niet blijvend in de gasheer gezet. + -- Daardoor wordt de lcl "Ganonimiseerd" in vele gevallen niet blijvend in de gastheer gezet. -- De persoon (prs record) moet daarom eerst aangepast worden. -- Tijdens het anonimiseren van de persoon wordt daarom de bez_afspraak_gastheer ook geanonimiseerd. -- In de gevallen dat er geen host wordt gebruikt en alleen tekst voor de persoon (gastheer) wordt ingevuld wordt het veld wel blijvend gezet. @@ -412,6 +412,7 @@ CREATE OR REPLACE PACKAGE BODY ano AS anonymize_period NUMBER := fac.safe_to_number (fac.getsetting ('anonymize_period')); v_count NUMBER; anonymize_mode NUMBER; + lcl_fac_anonymized fac_locale_xsl.fac_locale_xsl_tekst%TYPE := lcl.l('lcl_fac_anonymized'); -- Alle facturen die afgewezen of verwerkt zijn in de periode tussen de startdatum en de einddatum. CURSOR c_factuur @@ -479,6 +480,8 @@ CREATE OR REPLACE PACKAGE BODY ano AS IF anonymize_mode > 0 THEN + DBMS_APPLICATION_INFO.SET_ACTION ('ANONYMIZE'); // Voorkomt eventueel triggers + v_count := 0; FOR rec_f IN c_factuur LOOP @@ -542,18 +545,11 @@ CREATE OR REPLACE PACKAGE BODY ano AS IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen THEN - EXECUTE IMMEDIATE 'ALTER TRIGGER fin_t_fin_factuur_B_IU DISABLE'; - BEGIN - -- Anonimiseren van tekstvelden in de factuur. - UPDATE fin_factuur - SET fin_factuur_opmerking = CASE WHEN fin_factuur_opmerking IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END - , fin_factuur_opmerking_afw = CASE WHEN fin_factuur_opmerking_afw IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END - WHERE fin_factuur_key = rec_f.fin_factuur_key; - EXCEPTION - WHEN OTHERS THEN - EXECUTE IMMEDIATE 'ALTER TRIGGER fin_t_fin_factuur_B_IU ENABLE'; - END; - EXECUTE IMMEDIATE 'ALTER TRIGGER fin_t_fin_factuur_B_IU ENABLE'; + -- Anonimiseren van tekstvelden in de factuur. + UPDATE fin_factuur + SET fin_factuur_opmerking = CASE WHEN fin_factuur_opmerking IS NOT NULL THEN lcl_fac_anonymized END + , fin_factuur_opmerking_afw = CASE WHEN fin_factuur_opmerking_afw IS NOT NULL THEN lcl_fac_anonymized END + WHERE fin_factuur_key = rec_f.fin_factuur_key; END IF; -- Anonimiseren van de factuur tracken. @@ -592,7 +588,7 @@ CREATE OR REPLACE PACKAGE BODY ano AS THEN -- Anonimiseren van tekstvelden in de factuurregels van de factuur. UPDATE fin_factuurregel - SET fin_factuurregel_omschrijving = CASE WHEN fin_factuurregel_omschrijving IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END + SET fin_factuurregel_omschrijving = CASE WHEN fin_factuurregel_omschrijving IS NOT NULL THEN lcl_fac_anonymized END WHERE fin_factuurregel_key = rec_r.fin_factuurregel_key; END IF; @@ -1051,6 +1047,7 @@ CREATE OR REPLACE PACKAGE BODY ano AS prs_old_employee VARCHAR2 (100) := lcl.l('lcl_prs_old_employee'); v_count NUMBER; anonymize_mode NUMBER; + lcl_fac_anonymized fac_locale_xsl.fac_locale_xsl_tekst%TYPE := lcl.l('lcl_fac_anonymized'); -- Alle personen die tussen de startdatum en de einddatum verwijderd zijn. CURSOR c_reservering @@ -1107,6 +1104,8 @@ CREATE OR REPLACE PACKAGE BODY ano AS IF anonymize_mode > 0 THEN + DBMS_APPLICATION_INFO.SET_ACTION ('ANONYMIZE'); // Voorkomt eventuele triggers + v_count := 0; FOR rec_r IN c_reservering LOOP @@ -1164,9 +1163,9 @@ CREATE OR REPLACE PACKAGE BODY ano AS IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen THEN UPDATE res_rsv_ruimte - SET res_rsv_ruimte_omschrijving = CASE WHEN res_rsv_ruimte_omschrijving IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END - , res_rsv_ruimte_opmerking = CASE WHEN res_rsv_ruimte_opmerking IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END - , res_rsv_ruimte_telefoon = CASE WHEN res_rsv_ruimte_telefoon IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END + SET res_rsv_ruimte_omschrijving = CASE WHEN res_rsv_ruimte_omschrijving IS NOT NULL THEN lcl_fac_anonymized END + , res_rsv_ruimte_opmerking = CASE WHEN res_rsv_ruimte_opmerking IS NOT NULL THEN lcl_fac_anonymized END + , res_rsv_ruimte_telefoon = CASE WHEN res_rsv_ruimte_telefoon IS NOT NULL THEN lcl_fac_anonymized END WHERE res_rsv_ruimte_key = rec_r.res_rsv_ruimte_key; END IF; @@ -1188,7 +1187,7 @@ CREATE OR REPLACE PACKAGE BODY ano AS PROCEDURE anonymizefull(p_flags NUMBER DEFAULT 65535) AS BEGIN - DBMS_APPLICATION_INFO.SET_ACTION ('ANONYMIZE'); // Voorkomt triggers die in de weg zitten + DBMS_APPLICATION_INFO.SET_ACTION ('ANONYMIZE'); // Voorkomt trigger bez_t_bez_afspraak_B_IU die in de weg kan zitten -- Destructive obstrufication of personal data. UPDATE prs_perslid @@ -1282,24 +1281,16 @@ CREATE OR REPLACE PACKAGE BODY ano AS SET prs_contactpersoon_email= 'EC' || TO_CHAR(prs_contactpersoon_key) || '@notexist.facilitor.nl' WHERE prs_contactpersoon_email IS NOT NULL; - BEGIN - EXECUTE IMMEDIATE 'ALTER TRIGGER bez_t_bez_afspraak_B_IU DISABLE'; - UPDATE bez_afspraak - SET bez_afspraak_gastheer = (SELECT SUBSTR(prs_perslid_naam_full,1,50) - FROM prs_v_perslid_fullnames_all - WHERE prs_perslid_key = bez_afspraak_host_key - ) - WHERE bez_afspraak_host_key IS NOT NULL; + UPDATE bez_afspraak + SET bez_afspraak_gastheer = (SELECT SUBSTR(prs_perslid_naam_full,1,50) + FROM prs_v_perslid_fullnames_all + WHERE prs_perslid_key = bez_afspraak_host_key + ) + WHERE bez_afspraak_host_key IS NOT NULL; - UPDATE bez_afspraak - SET bez_afspraak_gastheer = INITCAP (DBMS_RANDOM.string ('l', LENGTH (bez_afspraak_gastheer))) - WHERE bez_afspraak_host_key IS NULL; - - EXECUTE IMMEDIATE 'ALTER TRIGGER bez_t_bez_afspraak_B_IU ENABLE'; - EXCEPTION - WHEN OTHERS THEN - EXECUTE IMMEDIATE 'ALTER TRIGGER bez_t_bez_afspraak_B_IU ENABLE'; - END; + UPDATE bez_afspraak + SET bez_afspraak_gastheer = INITCAP (DBMS_RANDOM.string ('l', LENGTH (bez_afspraak_gastheer))) + WHERE bez_afspraak_host_key IS NULL; UPDATE bez_bezoekers SET bez_afspraak_naam = UPPER(SUBSTR(bez_afspraak_naam,1,1)) || '. Bezoeker' diff --git a/FIN/FIN_TRI.SRC b/FIN/FIN_TRI.SRC index 9ce8a30b..b4ccca69 100644 --- a/FIN/FIN_TRI.SRC +++ b/FIN/FIN_TRI.SRC @@ -3,8 +3,8 @@ * $Id$ */ -CREATE_TRIGGER(fin_t_fin_factuur_b_iu) -BEFORE INSERT OR UPDATE ON fin_factuur +CREATE_TRIGGER(fin_t_fin_factuur_b_i) +BEFORE INSERT ON fin_factuur FOR EACH ROW BEGIN UPDATE_PRIMARY_KEY(fin_factuur_key, fin_s_fin_factuur_key); @@ -13,8 +13,8 @@ BEGIN END; / -CREATE_TRIGGER(fin_t_fin_factuurregel_b_iu) -BEFORE INSERT OR UPDATE ON fin_factuurregel +CREATE_TRIGGER(fin_t_fin_factuurregel_b_i) +BEFORE INSERT ON fin_factuurregel FOR EACH ROW BEGIN UPDATE_PRIMARY_KEY(fin_factuurregel_key, fin_s_fin_factuurregel_key); diff --git a/RES/RES_TRI.SRC b/RES/RES_TRI.SRC index e00a0b58..21fc1caa 100644 --- a/RES/RES_TRI.SRC +++ b/RES/RES_TRI.SRC @@ -407,6 +407,11 @@ CREATE_TRIGGER(res_t_res_rsv_ruimte_B_IU) BEFORE INSERT OR UPDATE ON res_rsv_ruimte FOR EACH ROW BEGIN + IF sys_context('USERENV', 'ACTION') = 'ANONYMIZE' OR + sys_context('USERENV', 'ACTION') = 'DBUPGRADE' THEN + RETURN; + END IF; + -- Niet waterdicht, meestal adequaat IF NOT UPDATING('res_rsv_ruimte_satisfaction') THEN diff --git a/_UP/DB48to49.src b/_UP/DB48to49.src index 1104230d..9aa9e047 100644 --- a/_UP/DB48to49.src +++ b/_UP/DB48to49.src @@ -112,9 +112,12 @@ ALTER TABLE mld_melding MODIFY mld_melding_onderwerp_ai VARCHAR2(200); /////////////////////////////////////////////////////////////////////////////////////////// MARX#80460 -BEGIN - adm.tryalter('TABLE prs_bedrijfadres DROP CONSTRAINT prs_c_prs_bedrijfadrestype'); -END; +ALTER TABLE prs_bedrijfadres DROP CONSTRAINT prs_c_prs_bedrijfadrestype; + +/////////////////////////////////////////////////////////////////////////////////////////// FCLT#84940 +DROP TRIGGER fin_t_fin_factuur_B_IU; +DROP TRIGGER fin_t_fin_factuurregel_B_IU; +DROP TRIGGER bez_t_bez_bezoekers_B_IU; /////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000