Bonjour monsieur,
Pour l'exo 2 dans la partie des triggers,on demande d'ecrire un trigger permettant d'incrémenter nbapp d'une formation chaque fois qu'on ajoute une inscription pour cette formation.
Voici mon code :
create or replace trigger nbre
before insert on inscription
for each row
begin
update formation set nbapp=nbapp+1 where codform=:new.codform;
end;
Mais lorsque j'essaie d'inserer dans la table d'inscription comme suit:
insert into inscription values(10,2,1000);
J'obtiens l'erreur suivante:
insert into inscription values(10,2,1000)
Rapport d'erreur -
ORA-00060: détection d'interblocage pendant l'attente d'une ressource
ORA-06512: à "C##SALMA.MODIFIER", ligne 6
ORA-04088: erreur lors d'exécution du déclencheur 'C##SALMA.MODIFIER'
ORA-06512: à "C##SALMA.MODIFIER", ligne 6
ORA-04088: erreur lors d'exécution du déclencheur 'C##SALMA.MODIFIER'
ORA-06512: à "C##SALMA.EX", ligne 2
ORA-04088: erreur lors d'exécution du déclencheur 'C##SALMA.EX'
Salma tu dois mettre ''after'' parceque le trigger doit modifier apres chaque insertion(il doit incrementer de 1 nbapp);
celui ci fonctionne bien tu peux essayer.
Create or replace trigger increase_form
after insert on inscription
for each row
enable
begin
update formation set nbapp =nbapp +1
where codform= :new.codform;
dbms_output.put_line('Une inscription vient d etre ajouté');
end;
/
bizarre poutant je reviens de compiler ce code il fonctionne
et j ai aussi tester tes valeurs elles marchent je vais te faire une capture
SQL> set serveroutput on
SQL> set verify off
SQL> Create or replace trigger increase_form
2
3 after insert on inscription
4
5 for each row
6
7 enable
8
9 begin
10
11 update formation set nbapp =nbapp +1
12
13 where codform= :new.codform;
14
15 dbms_output.put_line('Une inscription vient d etre ajouté');
16
17 end;
18
19 /
DÚclencheur crÚÚ.
SQL> insert into inscription values(10,2,2000);
Une inscription vient d etre ajouté
1 ligne crÚÚe.
SQL>