[PL/SQL - Trigger Oracle] Données non retournées
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:
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:
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:
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