bonjour a tous, j ai un petit probleme de debutant, j ai mes tables et un trigger qui agit sur deux, il est compilé correctement mais apres la fameuse insert rien ne se passe comme modification des tables, brefs voila mes simples tables et declencheur, merci de me donner un coup de pousse


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE Banque
( Bid NUMBER(10) PRIMARY KEY,
Bnom VARCHAR2(50)
);
CREATE TABLE Compte
( Cid NUMBER PRIMARY KEY,
Cnumero NUMBER(10,2),
Clibelle VARCHAR2(100),
Csolde NUMBER(10,2),
Cbanque NUMBER(10,2),
CONSTRAINT FK_Cbanque FOREIGN KEY (Cbanque)REFERENCES "BANQUE" (Bid) Enable
);



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
CREATE TABLE Operation
( Oidd NUMBER PRIMARY KEY,
Odate DATE,
Omontant NUMBER(10,2),
Osens CHAR,
Ocompte NUMBER,
CONSTRAINT FK_Operation FOREIGN KEY (Ocompte) REFERENCES "COMPTE" (Cid) Enable
) ;
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
create or replace trigger SHOT 
AFTER INSERT ON Operation 
referencing new as new old as old
for each row
DECLARE
sens Operation.Osens%type;
mont Operation.Omontant%type;
code NUMBER;
  -- making the trigger work outside of the main transaction
  PRAGMA autonomous_transaction;
Begin
SELECT Ocompte into code FROM OPERATION WHERE Oidd=:new.oidd;
SELECT Omontant into mont FROM Operation WHERE Oidd=:new.Oidd;
SELECT Osens into sens FROM Operation WHERE Oidd=:new.Oidd;
 IF (sens='c') 
 then
    UPDATE COMPTE SET Csolde=Csolde+mont WHERE Cid=code;
 ELSE
    UPDATE COMPTE SET Csolde=Csolde-mont WHERE Cid=code;
 end IF;
EXCEPTION WHEN NO_DATA_FOUND THEN NULL; 
End
;