Bonsoir à tous,
Je suis actuellement en train de créer une petite application pour laquelle j'ai crée un trigger (base de donnée Oracle), dont voici le code :
Mais dès que je fais une transaction sur la table Operations, Oracle me renvoie l'erreur suivante :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 create or replace trigger Maj_compte before delete or update or insert on operations for each row declare old_somme Operations.somme%TYPE DEFAULT 0; somme_tmp Operations.somme%TYPE DEFAULT 0; begin IF DELETING THEN SELECT somme INTO somme_tmp FROM Operations WHERE id_operation = :OLD.id_operation; UPDATE Compte SET solde = (solde - somme_tmp) WHERE id_compte = ':OLD.id_compte'; END IF; IF INSERTING THEN SELECT somme INTO somme_tmp FROM Operations WHERE id_operation = :NEW.id_operation; UPDATE Compte SET solde = (solde + somme_tmp) WHERE id_compte = ':NEW.id_compte'; END IF; IF UPDATING THEN SELECT somme INTO old_somme FROM Operations WHERE id_operation = :OLD.id_operation; IF old_somme > :OLD.somme THEN UPDATE Compte SET solde = (solde - (old_somme - :OLD.somme)) WHERE id_compte = ':NEW.id_compte'; ELSE UPDATE Compte SET solde = (solde + (:OLD.somme - old_somme)) WHERE id_compte = ':NEW.id_compte'; END IF; END IF; end Maj_compte;
Cela commence à me gaver et je n'arrive pas à comprendre mon erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ORA-01403: aucune donnée trouvée ORA-06512: à "HUGO.MAJ_COMPTE", ligne 12 ORA-04088: erreur lors d'exécution du déclencheur 'HUGO.MAJ_COMPTE'
Voici les tables concernées :
Si vous avez des petits coups de pouces à me donner je serai ravi.
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
17
18
19 CREATE TABLE Compte ( id_compte VARCHAR(15) NOT NULL PRIMARY KEY, type VARCHAR(20) NOT NULL, nom_banque VARCHAR(20) NOT NULL, solde FLOAT NOT NULL, id_client INTEGER NOT NULL ); CREATE TABLE Operations ( id_operation INTEGER NOT NULL PRIMARY KEY, type_operation VARCHAR(6) NOT NULL, date_operation Date NOT NULL, libelle VARCHAR(50) NOT NULL, somme FLOAT NOT NULL, id_compte VARCHAR(15) NOT NULL );
Merci
Partager