trigger me signal une erreur lors de son exécution
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:
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:
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 ?