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 ;
Partager