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:
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
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; /
ou est la problème svp ?
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'
Partager