Trigger insert

Fermé
sannou24 Messages postés 19 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 24 octobre 2011 - 18 janv. 2011 à 20:42
 kamna - 28 avril 2012 à 16:39
Bonsoir,
je veux créer un déclencheur qui se déclenche quand j'insère un numéro de département nulle.
create or replace trigger insert_d
before insert on dept
  FOR EACH ROW
  BEGIN
  IF :NEW.deptno IS NULL THEN
  RAISE_APPLICATION_ERROR(-20500,'erreur');
  END IF;
 /

il m'affiche ce message : Avertissement : Déclencheur créé avec erreurs de compilation.
j'ai pas compris l'erreur

puis,
SQL> insert into dept(deptno,dname,loc) values(14,'sssss','aaaaa');

insert into dept(deptno,dname,loc) values(14,'sssss','aaaaa')
*
ERREUR à la ligne 1 :
ORA-04098: Déclencheur 'SYSTEM.INSERT_D' non valide. Echec de la revalidation

meme erreur pour SQL> insert into dept(deptno,dname,loc) values(0,'dd','ff');

SQL> select * from dept;

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
        10 robert                     paris
        20 mmmm                    nante
        21 rrr                            tttt
         1 aaa                          bbb
        18 xxxx                        dddd


pourquoi il ne permet pas d'ajouter cet ligne
et merci

3 réponses

HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
20 janv. 2011 à 11:14
Essaye avec un END à la fin, pour fermer le BEGIN.

1
sannou24 Messages postés 19 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 24 octobre 2011 1
20 janv. 2011 à 16:32
merci Mr,
j'ai essayé , mais tjs le meme erreur :(
1
j'avais la même erreur il ne faut pas faire dans begin : un select sur la table écrite devant after insert.
j'ai changé le trigger est ça marché pour moi
0