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 :

TRIGGER insert AVEC GESTION ERREURS


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 114
    Par défaut TRIGGER insert AVEC GESTION ERREURS
    Bonsoir,
    je suis en train d'essayer d' écrire un trigger (before insert ) qui me permettrait de refuser cet insert en fonction du résultat d'une condition.

    le problème avec mon code est que l' exception est bien levée mais le traitement continue;
    j'aimerais lever cette exception et arrêter le traitement insert .
    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
    21
    22
    23
    24
    25
    26
     
    create or replace
    TRIGGER TRIGGER1 
    before INSERT ON EMPLOYEES 
    for each row
    declare
    A exception;
     
    BEGIN
     
     
    if :new.employee_id > 1000 then
     
    testo.add_nouv_arriv(:new.first_name,:new.last_name,:new.hire_date);
     
    DBMS_OUTPUT.PUT_LINE('ajout'||:new.employee_id);
    else
     
    RAISE A ;
     
    END IF;
     
    exception 
    When A then DBMS_OUTPUT.PUT_LINE('probleme identifiant doit etre superieur à 1000');
     
    END;
    Pourriez vous me dire comment arreter le traitement de cet insert.
    Merci

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    L'erreur est catchée par le EXCEPTION WHEN A
    Il suffit que tu rajoutes un RAISE; après le DBMS_OUTPUT.

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Cela dit, utiliser un DBMS_OUTPUT pour une erreur ce n'est pas bon. Le mieux est d'utiliser RAISE_APPLICATION_ERROR (voir le tuto sur les erreurs)

Discussions similaires

  1. Fonction Réplication avec gestion erreur
    Par ValNyz dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/07/2014, 11h08
  2. Déclencheur (trigger) insertion avec l'héritage
    Par provisoire80 dans le forum Développement
    Réponses: 10
    Dernier message: 17/08/2009, 13h52
  3. Trigger compilé avec des erreurs
    Par Sh4dow49 dans le forum SQL
    Réponses: 2
    Dernier message: 17/04/2009, 14h19
  4. [TRIGGER] insertion avec clef auto-increment dupliquer
    Par TheBlackReverand dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 27/03/2009, 12h06
  5. Insert avec select sur table avec Trigger d'insertion
    Par bran_noz dans le forum Développement
    Réponses: 5
    Dernier message: 23/12/2005, 14h38

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