1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| CREATE OR REPLACE TRIGGER tg_upd_identifier_banque
FOR UPDATE OF identifier ON banque
ENABLE
WHEN (OLD.typebanque = 'guichet' AND OLD.groupebanque = '06' AND NEW.identifier != OLD.identifier)
COMPOUND TRIGGER
TYPE code_banque_cible_t IS TABLE OF correspondance_bank.code_banque_cible%TYPE INDEX BY BINARY_INTEGER;
v_code_banque_cibles code_banque_cible_t;
TYPE groupebanque_t IS TABLE OF banque.groupebanque%TYPE INDEX BY BINARY_INTEGER;
v_groupebanques groupebanque_t ;
AFTER EACH ROW IS
BEGIN
SELECT c.code_banque_cible, :NEW.groupebanque
INTO
v_code_banque_cibles(v_code_banque_cibles.count + 1),
v_groupebanques(v_groupebanques.count + 1)
FROM correspondance_bank c
WHERE c.code_guichet_source = :OLD.identifier
AND c.code_guichet_cible = :NEW.identifier
AND c.code_banque_source = (
SELECT r.identifier FROM banque r
WHERE r.groupebanque = :NEW.groupebanque
AND r.typebanque = 'etablissement'
)
;
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN
FOR idx IN 1 .. v_code_banque_cibles.count
LOOP
UPDATE banque r SET identifier = v_code_banque_cibles(idx)
WHERE r.groupebanque = v_groupebanques(idx) AND r.typebanque = 'etablissement'
;
END LOOP ;
END AFTER STATEMENT;
END;
/ |
Partager