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

Oracle Discussion :

Un Trigger After INSERT peut-il empêcher l'INSERT ?


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Un Trigger After INSERT peut-il empêcher l'INSERT ?
    Bonjour,

    Je voudrais réaliser un trigger Oracle (10g) qui interdirait à un champ d'une table A d'être modifié si un paramètre d'une autre table B n'est pas correctement renseigné.

    --> Je m'explique

    Si param de la table B est à 0 et que je cherche à modifier mon champ X
    --> je peux modifier le champ X de ma table A

    Si param de la table B est à 1 et que je cherche à modifier mon champ X
    --> je ne peux pas modifier le champ_X de ma table A
    --> J'envoie un message d'erreur type oracle ORAXXX

    Pour l'instant j'ai réalisé un trigger sur modification de ma table A avec ce code

    IF :NEW.CHAMP_X!= :OLD.CHAMP_X THEN
    SELECT PARAM_TABLE INTO PARAM from TABLE_B
    IF PARAM = '1' THEN -- ACTION NON AUTORISEE
    DBMS_OUTPUT.PUT_LINE ('Action non autorisée');
    rollback;
    END IF;


    Or, je ne vois pas le message d'erreur et le rollback n'est pas autorisé dans les triggers ....

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    remplace rollback et dbms_output par RAISE_APPLICATION_ERROR recherche

  3. #3
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut,

    cf ce cours sur les triggers : 6. Les déclencheurs
    Un déclencheur s'exécute dans le cadre d'une transaction. Il ne peut donc pas contenir d'instruction COMMIT ou ROLLBACK ou toute instruction générant une fin de transaction implicite (ordre DDL)
    Pour ton cas de figure, je passerai plutôt par une fonction stockée en charge de l'insertion, qui irait d'abord lire la table de condition avant l'insertion, et renvoyant soit un booleén, soit la clé de l'enregistrement créé (0 si pas créé) par exemple.

    [Edit] grillé ! Suis les conseils de Fred alors
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci pour le "RAISE_APPLICATION_ERROR " ca marche comme je le voulais !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de lock sur un trigger after insert
    Par funboard dans le forum Oracle
    Réponses: 5
    Dernier message: 04/03/2009, 12h14
  2. Trigger after insertion pas validée
    Par guigeek dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/12/2006, 13h37
  3. Trigger after insertion pas validée
    Par guigeek dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/12/2006, 14h23
  4. Trigger after insert, sans each row, possible ??
    Par veenie dans le forum Oracle
    Réponses: 5
    Dernier message: 16/02/2006, 15h18

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