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 :

trigger / phpmyadmin


Sujet :

SQL Procédural MySQL

  1. #1
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut trigger / phpmyadmin
    Bonjour bonjour,

    C'est mon premier trigger et je sens que je vais apprécier les triggers.

    Mais premier blocage...
    Cette requête est lancée dans phpmyadmin qui me retourne des erreurs de syntaxes diverses et variées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    delimiter //
    CREATE TRIGGER `call_maj_stock` AFTER INSERT ON panier 
    FOR EACH ROW 
    BEGIN 
    UPDATE liste_stock SET stock = (stock - new.panier_quantite) WHERE article_id=new.panier_article_id AND article_taille=new.panier_article_taille;
    END;
    //
    Quelque chose vous semble incorrect dans ce trigger ? Je lis ici et là que phpmyadmin n'est pas toujours coopératif avec les triggers et qu'il faut utiliser "DELIMITER" mais c'est justement "DELIMITER" qui semble faire échouer la requête.

    Merci par avance pour votre aide.

  2. #2
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TRIGGER `call_maj_stock` AFTER INSERT ON panier
    FOR EACH ROW
    BEGIN
    UPDATE liste_stock SET stock = (stock-NEW.quantite) WHERE article_id=NEW.article_id AND taille=NEW.taille;
    END;
    /
    Toujours une erreur de syntaxe...la voyez-vous ? (en dehors des champs sql que j'ai renommés vite fait ci-dessus)

    Pour faire simple :
    1 - qlqun a t-il déjà réussi à utiliser des triggers sur MYSQL 5.x
    2 - qlqun a t-il déjà réussi à créer des triggers tel que celui ci-dessus depuis PHP/PDO ? Si oui y a t-il une spécif ?

    Merci

  3. #3
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Ok j'ai réussi sur un autre serveur (problème de droits sur l'autre).

    Maintenant j'ai un problème qd j'essaye de supprimer le trigger.
    Savez-vous comment récupérer le schéma du trigger ? J'en ai besoin pour la syntaxe de suppression : DROP TRIGGER schéma.triggername.

    Si j'essaye sans le schéma ou sans la table parente (table.triggername) j'ai un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    General error: 2030 This command is not supported in the prepared statement protocol yet

    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MYSQL : Ver 14.12 Distrib 5.0.32,

  4. #4
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    "General error: 2030 This command is not supported in the prepared statement protocol yet"

    J'ai toujours ce message d'erreur à l'exécution de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DROP TRIGGER panier.call_maj_stock
    Je ne trouve pas de solution.

  5. #5
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Bon et bien j'avance tout seul...

    J'ai finalement pu supprimer le trigger en console.
    Le problème se situe au niveau de la communication php/pdo/mysql (le fameux protocole dans le message d'erreur).

    J'utilise le même utilisateur en console.

    Bon maintenant j'ai un nouveau problème !!
    Le trigger ne s'exécute pas lorsqu'un INSERT est effectué dans la table "panier".

    Comment peut-on débugger ? je ne trouve pas de trace dans logs... (/var/log/mysql/mysql.bin.00... <=== j'y trouve bien le INSERT mais pas de trace d'exécution de trigger)

  6. #6
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Ok ça marche maintenant (et je vois que je suis toujours seul sur ce post ...).

    Problèmes non résolus :
    - Je n'arrive pas supprimer un trigger depuis php/Pdo
    - La commande "DELIMITER |" ou "DELIMITER //" ne s'execute pas depuis php /Pdo
    - Le trigger fonctionne une et une seule fois par ligne c'est-à-dire que j'ai beau ajouter des produits dans mon panier (INSERT), la mise à jour du stock concernant ce produit (UPDATE) n'est effectuée qu'une seule fois...comme si le trigger ne pouvait agir qu'une seule fois par ligne dans toute sa durée de vie.

    Je suis coincé sur ces 3 points depuis hier soir.

    Un coup de main please !

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

Discussions similaires

  1. Trigger sous PHPMyAdmin
    Par beber12 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 29/05/2014, 23h03
  2. problème trigger et phpmyadmin
    Par cédric20 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/05/2011, 13h47
  3. TRIGGER MySQL phpMyAdmin
    Par Damou56 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/02/2011, 18h49
  4. Trigger phpmyadmin non exécuté
    Par katsuya dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 30/07/2009, 10h55
  5. Création de triggers sous PHPMyAdmin
    Par MakorDal dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/02/2007, 18h50

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