Trigger insert

sannou24 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
 kamna -
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   Statut Contributeur Dernière intervention   1 608
 
Essaye avec un END à la fin, pour fermer le BEGIN.

1
sannou24 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   1
 
merci Mr,
j'ai essayé , mais tjs le meme erreur :(
1
kamna
 
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