Bonjour à tous et bonne année,
Je cherche depuis un moment et mes tests ne sont pas concluants, alors je me permet de vous demander.
J'ai créée un trigger sur une colonne spécifique d'une table et je voudrais que l'exécution mette à jour une autre colonne d'une autre ligne de la même table.
Seulement, comme mentionné, mes tests ne donnent pas le résultat voulu.
Voici la requête en question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 create or replace TRIGGER UPD_BANQUE AFTER UPDATE OF IDENTIFIER ON BANQUE FOR EACH ROW WHEN (OLD.TYPEBANQUE = 'guichet' AND OLD.GROUPEBANQUE = '06' AND NEW.IDENTIFIER != OLD.IDENTIFIER) DECLARE new_bank_code BANQUE.IDENTIFIER%type; BEGIN SELECT c.CODE_BANQUE_CIBLE into new_bank_code 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 TYPEBANQUE = 'etablissement'); UPDATE BANQUE r SET IDENTIFIER = new_bank_code WHERE r.GROUPEBANQUE = :NEW.GROUPEBANQUE AND r.TYPEBANQUE = 'etablissement'; END;
niveau architecture, j'ai une table banque qui comprend les codes établissements et guichets, chaque ligne représentant une info, identifiée par le type. Les données sont liées par un code de groupe.
Il y a aussi une table correspondance qui permet de trouver les correspondances entre les anciennes valeurs et les nouvelles, à la fois pour les guichet et pour les établissements.
Je souhaite que l'établissement ne se mette à jour uniquement que si le guichet du même groupe à été changé (par le nouveau code de la table correspondance).
D'avance merci
Partager