IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

probleme de trigger


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut probleme de trigger
    salut,

    j'ai creer ce trigger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace trigger xtest1 
    before insert on  test1
    for each row
    begin
    if :NEW.charcol='' then
    test1.charcol:='vide';
    end if;
    end;
    donc si il trouve '' dans mon insert , il le remplace par vide.
    Mais que je fais un insert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into test1 (clé,charcol) values (1,'')
    ça fonctionne pas et j'ai ce message d'erreur
    Error starting at line 1 in command:
    insert into test1 (clé,charcol) values (1,'')
    Error at Command Line:1 Column:12
    Error report:
    SQL Error: ORA-04098: trigger 'ZIP.XTEST1' is invalid and failed re-validation
    voici le script de ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create table test1 (clé integer,charcol varchar(5) not null);
    je comprend pas pourquoi ?
    est ce que quelqu'un pourrait m'eclairer ?

    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Le message d'erreur est pourtant clair : votre trigger est invalide.

    Faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show err trigger xtest1
    et vous devriez pouvoir comprendre votre problème.

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    ceci serait mieux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if :NEW.charcol IS NULL then
      :NEW.charcol := 'vide';
    end if;

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    je l'ai modifier comme cela et j'ai toujour le meme message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace trigger xtest1 
    before insert on  test1
    for each row
    begin
    if :NEW.charcol='x' then
    :NEW.charcol='v';
    end if;
    end;
    Error starting at line 1 in command:
    insert into test1 (clé,charcol) values (1,'x')
    Error at Command Line:1 Column:12
    Error report:
    SQL Error: ORA-04098: trigger 'ZIP.XTEST1' is invalid and failed re-validation
    en theorie quand il trouve x il insere v à la place mais il n'y arrive pas ?

  5. #5
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    il compile pas ton trigger, avec quel outil tu le traites ? tu as mis " :NEW.charcol='v'; " au lieu de " :NEW.charcol:='v';"

  6. #6
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    ouai exact c'etait le :=; merci
    et j'ai essayer avec is null et sa fonctionne
    et je crois que tu a raison sa vien du '' comme il le considere comme un null bin sa bogue
    dommage j'aurai essayer

  7. #7
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    bon je sais, tu vas encore être dégouté, mais je pense que j'ai l'explication à ton problème....

    Comme tu le sais (et que tu le déplore...) '' veux dire null pour un varchar, et comme le test "machin = null" renvoi toujours faux en oracle,

    -> le test ":NEW.charcol='' " renverra toujours FAUX, il faut donc le remplacer par "":NEW.charcol is null "

Discussions similaires

  1. probleme de trigger
    Par [ME]yeye dans le forum Oracle
    Réponses: 6
    Dernier message: 15/06/2006, 15h33
  2. Problème comportement trigger
    Par ameno_123 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 04/05/2006, 00h20
  3. Probleme de trigger
    Par Lomme dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 09/03/2006, 10h39
  4. Probleme de trigger
    Par luciemacherie dans le forum Oracle
    Réponses: 4
    Dernier message: 16/01/2006, 17h21
  5. [JDBC]Probleme avec trigger Oracle
    Par aurel89 dans le forum JDBC
    Réponses: 2
    Dernier message: 02/08/2005, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo