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

SQL Procédural MySQL Discussion :

Triggers de gestion de stock


Sujet :

SQL Procédural MySQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut Triggers de gestion de stock
    Bonjour, je souhaite créé mon premier triggers pour facilité la gestion d'un site de vente en ligne que je développe. le but de mon triggers est le suivant :
    Lors de la suppresion d'un produit dans la base de donnée, je souhaite supprimer toutes les entrées qui le concerné dans la table stock... Mon probléme étant le suivant... J'ai beau lire et relire des centaines de site je ne comprend pas du tout comment créer mon trigger :$
    Pour le moment voila ce que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TRIGGER upd_stock AFTER DELETE ON produit
    FOR EACH ROW
    Mais je ne vois pas du tout comment définir les instructions de suppresion dans ma table de stock
    A moins que ce ne soit simplement impossible?

    ps : peut-on créé des triggers avec phpmyadmin?

    Merci d'avance à tous pour l'aide que vous voudrez bien m'apporter

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Le plus simple est encore d'oublier le trigger et de mettre un ON DELETE CASCADE sur ta clé étrangère.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    En effet je ne connaissais pas cette solution qui est bien pratique, merci à toi!
    Mais je sais tjr pas faire de trigger, et je ne vois donc tjr pas l'utilité de ceux ci.

    Par exemple est-il possible de créer un trigger qui lorsqu'un client achete un produit, la quantité acheté et automatiquement déduite de mon stock?

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Citation Envoyé par shadypierre Voir le message
    Par exemple est-il possible de créer un trigger qui lorsqu'un client achete un produit, la quantité acheté et automatiquement déduite de mon stock?
    oui, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER Ventes_AI AFTER INSERT ON Ventes
    FOR EACH ROW
    UPDATE Stocks
    SET Stocks.Quantite = Stocks.Quantite - new.Quantite 
    WHERE Stocks.IDproduit = new.IDproduit
    Les triggers reposent généralement sur les pseudo-tables new et old, qui représentent les données nouvelles ou anciennes de la table sur laquelle porte le trigger.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    MERCI, je viens de comprendre grâce à toi le principe de fonctionnement, je n'avais pas saisi l'histoire de new et de old, je ne comprenais pas comment les données été transmise à la table que je voulais modifier. Bon par contre maintenant que j'ai compris le principe me reste à comprendre comment on gère ces pseudo-table, lol

    Sur mon site j'ai une table exister (qui correspond à mon stock en fonction de la taille, par exemple, le produit de référence x est dispo en taille y avec une quantité w), puis j'ai une table commandes qui reçoit... les commandes(qui l'aurais deviné) avec comme champs la référence du produit, la taille commandé et de la même manière la quantité. Donc si j'ai bien compris dans mon cas le trigger à créer serait le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER gestion_stock AFTER INSERT ON commandes
    FOR EACH ROW
    UPDATE exister
    SET exister.quantite = exister.quantite - commandes.quantite 
    WHERE exister.refProd = commandes.refProd
    Est-ce bien ça? :$

    merci pour ton aide.

    ps : je peux utiliser ce genre de commande sql directement dans phpmyadmin?

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Citation Envoyé par shadypierre Voir le message

    Est-ce bien ça? :$
    Non, tu ne dois pas utiliser commandes (qui contient l'intégralité des commandes) mais new (qui ne contient que la ou les nouvelles lignes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER gestion_stock AFTER INSERT ON commandes
    FOR EACH ROW
    UPDATE exister
    SET exister.quantite = exister.quantite - new.quantite 
    WHERE exister.refProd = new.refProd
    Citation Envoyé par shadypierre Voir le message
    ps : je peux utiliser ce genre de commande sql directement dans phpmyadmin?
    Celle-là, oui. S'il doit y avoir plusieurs requêtes, c'est un peu plus compliqué... cf http://alain-defrance.developpez.com...integre-error/ qui constitue une excellente introduction aux triggers.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Très bon site, merci pour le liens. En faite c'est juste que je ne comprend pas comment la pseudo-table new existe, je n'ai aucune action à faire pour la créer c'est bien ça? C'est juste une table qui reçoit la valeur que je viens d'insérer? Donc au final l'histoire de new je m'en occupe pas, ça recupére les valeurs automatiquement.

    edit : apparement non je n'ai aps du bien comprendre (oui je suis lent, ) pusique lorsque j'excute cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER tr_gestionStock AFTER INSERT ON commande
    FOR EACH ROW
    UPDATE exister
    SET exister.quantite = exister.quantite - new.quantite 
    WHERE exister.refProd = new.refProd
    phpmyadmin me retourne l'erreur suivante :
    #1054 - Unknown column 'quantite' in 'NEW'

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Ok autant pour moi, j'avais fait une erreur c'est ma table posseder et non commande qui contenais les champs refProd et quantite

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 739
    Points
    11 739
    Par défaut
    Citation Envoyé par shadypierre Voir le message
    Très bon site, merci pour le liens. En faite c'est juste que je ne comprend pas comment la pseudo-table new existe, je n'ai aucune action à faire pour la créer c'est bien ça? C'est juste une table qui reçoit la valeur que je viens d'insérer? Donc au final l'histoire de new je m'en occupe pas, ça recupére les valeurs automatiquement.
    yep !

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Whaou vraiment incroyable... C'est extraordinaire comme système et vraiment bien plus pratique et plus logique que de géré tout au niveau applicatif!

    Merci bcp pour le coup de main, j'ai tjr besoin d'un peu d'aide pour me lancer mais maintenant que je suis parti j'en suis dja à mon troisième trigger avec tout ça je vais réduire mon code de moitié!


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

Discussions similaires

  1. Trigger pour une gestion de stock
    Par anneso9 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/11/2010, 13h06
  2. Trigger de gestion de stock
    Par Rahanin dans le forum Débuter
    Réponses: 12
    Dernier message: 06/05/2010, 15h49
  3. Gestion de stock - Prix Moyen Pondéré
    Par hugo69 dans le forum Access
    Réponses: 33
    Dernier message: 28/10/2005, 18h03
  4. Analyses du progiciel de gestion de stock COSWIN CS 5.2
    Par africanroseonlyone dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 13/10/2005, 16h01
  5. gestion des stocks
    Par gekondo dans le forum Access
    Réponses: 1
    Dernier message: 30/09/2005, 12h41

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