bonjour j'ai réaliser un trigger agissant sur une table matiere. lors de l'ajout d'une nouvelle matiere le trigger ajoute la liste des etudiants concerné dans une table note_prof . voila 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
create or replace trigger liste_note_prof2
  after insert or update or delete on matiere for each row
declare 
 cursor c_etudiant is select * from etudiant where niveau=:new.niveau ;
 
etudiant c_etudiant%rowtype;
begin
open c_etudiant;
   if inserting or updating Then 
 
 
for etudiant in c_etudiant loop
    insert into note_prof(id_etudiant,niveau,nom_etudiant,prenom_etudiant,nom_matiere) values (etudiant.id_etudiant,:new.niveau,etudiant.nom_etudiant,etudiant.prenom_etudiant,:new.nom_matiere) ;
end loop;
close c_etudiant;
   Elsif deleting Then
                       delete from note_prof where nom_matiere=:old.nom_matiere;
   End if ;
End;
/
et voila l'erreur généré lors de la tentative d'ajout d'une nouvelle matiere :
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
SQL> desc matiere;
 Nom                                       NULL ?   Type
 ----------------------------------------- -------- ----------------------
 
 NOM_MATIERE                               NOT NULL VARCHAR2(20)
 NOM_MODULE                                         VARCHAR2(20)
 COEFFICIENT                                        NUMBER(1)
 NIVEAU                                             NUMBER(1)
 
SQL> insert into matiere  values('informatique','module1',1,1);
insert into matiere  values('informatique','module1',1,1)
            *
ERREUR Ó la ligne 1 :
ORA-06511: PL/SQL : curseur dÚjÓ ouvert
ORA-06512: Ó "MED.LISTE_NOTE_PROF2", ligne 2
ORA-06512: Ó "MED.LISTE_NOTE_PROF2", ligne 10
ORA-04088: erreur lors d'exÚcution du dÚclencheur 'MED.LISTE_NOTE_PROF2'
ou est la problème svp ?