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 :

déclencheur oracle pl/sql


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut déclencheur oracle pl/sql
    Bonjour,

    Je dois réaliser une application de gestion de stock avec oracle application express c'est pour un stage, mais étant débutant en pl/sql je bloque sur un déclencheur que je dois créer.

    En fait je voudrais qu'a chaque ajout de ligne sur ma table 'livrer' ma table produits (contenant la quantité en stock du produit) soit mise à jour sur son champ qte_stock (quantité en stock) par la valeur entrée dans mon champ qte_entrée de la table livrer.

    Je voudrais donc savoir si c'est possible de créer une variable qui prendrais la valeur du champ qte_entree et qui mettrais à jour la table produits avec une requete update qui prends comme jointure le code produit et additionne la valeur du champ qte_stock de la table produit avec celle du champ qte_entree de la table livrer.

    voici la structure de mes 2 tables pour y voir plus clair :

    PRODUITS
    id_produit
    nom_produit
    qte_stock

    LIVRER
    num_bl_fk #
    id_prod_fk #
    qte_entree

    num_bl_fk estune clef étrangere de ma table livraison qui contient de numéro du bon de livraison la date et l'id fournisseur.

    Merci j'espere que c'est assez claire lol si vous avez une autre solution ou si ce que je veux n'est pas possible ...

    Je suis sous oracle 10g, windows vista 32bits, et j'utilise oracle application express 2.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut
    J'ai testé ce code mais rien ne passe, je ne sais pas si il manque quelque chose :

    CREATE OR REPLACE TRIGGER "AJOUTSTOCK" AFTER INSERT ON livrer FOR EACH ROW
    DECLARE
    nbinsert livrer.qte_entree%TYPE;
    nb_prod livrer_bliv.NUM_PROD%TYPE;
    BEGIN

    UPDATE produits
    SET produits.qte_stock = produits.qte_stock + 1
    WHERE produits.ref_prod = nb_prod;

    END;

  3. #3
    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
    Merci de penser à utiliser les balises code (# dans la toolbar)

    Il ne peut rien se passer, ta variable nb_prod est égale à null (tu ne l'initialises pas). Je suppose que tu veux faire quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE TRIGGER "AJOUTSTOCK" AFTER INSERT ON livrer FOR EACH ROW
    DECLARE 
    BEGIN
     
    UPDATE produits
    SET produits.qte_stock = produits.qte_stock + 1
    WHERE produits.ref_prod = :new.ref_prod;
     
    END;
    (:new.ref_prod : numéro du produit mis à jour dans la table livrer)

    Pour plus d'infos sur les triggers :
    http://sheikyerbouti.developpez.com/...?page=Chap6#L6

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut
    En fait je voudrais faire un déclencheur qui met a jour ma table de stock pour chaque ligne ajoutée dans ma table livrer.
    Il faudrait que le trigger récupère la valeur du champ quantité de ma table livrer pour l'additionner a la valeur du champ qui contient le stock dans ma table stock.

  5. #5
    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
    Utilises les variables :new.<col_de_table_livrer> (par exemple :new.qte_entree);

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut
    Oui c'est ce que j'ai fait, voici le code que j'ai entré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create or replace
    TRIGGER "AJOUTSTOCK" AFTER INSERT ON ligne_bliv FOR EACH ROW
    DECLARE 
    BEGIN
     
    UPDATE produits
    SET produits.qte_stock = produits.qte_stock + :new.qte_entree
    WHERE produits.ref_prod = :new.num_prod;
     
    END;
    Mais rien ne passe au niveau de la table produit, le champ stock n'est pas mis à jour ...

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

Discussions similaires

  1. oracle et sql serveur
    Par srwg dans le forum Oracle
    Réponses: 8
    Dernier message: 22/12/2004, 16h25
  2. pilotes odbc pour linux pour attaquer une BD oracle et sql S
    Par mloul dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 08/12/2004, 15h58
  3. Delphi -> Oracle : PL/SQL
    Par kribot dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/06/2004, 13h18
  4. portage oracle pl/SQL -> PostGreSQL
    Par luta dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/05/2004, 11h40
  5. PHP + Oracle + PL/ SQL
    Par bchristo dans le forum SQL
    Réponses: 12
    Dernier message: 28/04/2004, 15h49

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