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 sur Modificaiton [18c]


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2018
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Trigger sur Modificaiton
    Bonjour à tous, j'ai un souci sur un trigger,
    Et malgré la doc Oracle je m'en sors pas.
    En gros j'ai un système d'indice, et je souhaiterais si lorsque la valeur du champ REF_DEGURG est supérieur, modifier la colonne INDICE_PRIO à 0 de la ligne qui a été modifier.
    Actuellement j'en suis arrivé à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE OR REPLACE TRIGGER HTL_INDICE_DMD BEFORE UPDATE OF REF_DEGURG ON HTL_DMD FOR EACH ROW
    BEGIN
    	IF (:old.REF_DEGURG < :new.REF_DEGURG) THEN
    	    UPDATE HTL_DMD SET INDICE_PRIO = 0 WHERE HTL_DMD.ID = :OLD.ID;
    	END IF;
    END;

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    décembre 2019
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : décembre 2019
    Messages : 731
    Points : 1 172
    Points
    1 172
    Par défaut
    Bonjour,

    Le UPDATE est déjà en cours puisque le trigger se déclenche, donc tu n'as pas besoin de faire UPDATE mais tout simplement une assignation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE TRIGGER HTL_INDICE_DMD BEFORE UPDATE OF REF_DEGURG ON HTL_DMD FOR EACH ROW
    BEGIN
    	IF (:old.REF_DEGURG < :new.REF_DEGURG) THEN
    	    :NEW.INDICE_PRIO := 0;
    	END IF;
    END;

  3. #3
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    avril 2013
    Messages
    1 649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 1 649
    Points : 1 995
    Points
    1 995
    Par défaut
    Et quel est précisément le pb?

    Tu as un message d'erreur à la compilation?
    Lors de l'update tu n'as pas le résultat attendu? Si oui, tu constates quoi?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  4. #4
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2018
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    Bonjour,

    Le UPDATE est déjà en cours puisque le trigger se déclenche, donc tu n'as pas besoin de faire UPDATE mais tout simplement une assignation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE TRIGGER HTL_INDICE_DMD BEFORE UPDATE OF REF_DEGURG ON HTL_DMD FOR EACH ROW
    BEGIN
    	IF (:old.REF_DEGURG < :new.REF_DEGURG) THEN
    	    :NEW.INDICE_PRIO := 0;
    	END IF;
    END;
    Super !
    J'ai compris l'erreur et ça marche merci beaucoup ! Ca m'aideras énormement pour mes futurs triggers x)

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    juin 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2018
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Et quel est précisément le pb?

    Tu as un message d'erreur à la compilation?
    Lors de l'update tu n'as pas le résultat attendu? Si oui, tu constates quoi?
    Le soucis était que je n'avais pas de modification comme je le souhaitais sur le Trigger et aucune erreur de compilation.

    Mais du coup la réponse de la personne précédente à répondu à mon soucis !

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

Discussions similaires

  1. trigger sur deux tables
    Par Shabata dans le forum Développement
    Réponses: 4
    Dernier message: 04/05/2004, 16h55
  2. triggers sur plusieurs bases de données
    Par Shabata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2004, 10h02
  3. Trigger sur une colonne ?
    Par hpalpha dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 14h16
  4. Trigger sur select
    Par bilo2000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/02/2004, 13h39
  5. Pb Trigger sur vue
    Par cosminutza dans le forum Développement
    Réponses: 3
    Dernier message: 28/07/2003, 16h37

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