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 :

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;
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
 
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'
Cela commence à me gaver et je n'arrive pas à comprendre mon erreur.
Voici les tables concernées :

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
);
Si vous avez des petits coups de pouces à me donner je serai ravi.
Merci