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 :

[PHP5.2][MySQL5.0.27] Creation de triggers depuis PHP


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Points : 85
    Points
    85
    Par défaut [PHP5.2][MySQL5.0.27] Creation de triggers depuis PHP
    Bonjour

    Je tente de créer un trigger permettant lors de la suppression d'une ligne dans une table de supprimer automatiquement toutes les données liées dans une autre table. Je le faisais jusqu'à présent manuellement avec une requète du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mysqli->real_query ('DELETE t1.*, t2.* FROM lstWIBloc AS t1 LEFT JOIN lstWIBlocLang AS t2 on t2.uidBloc=t1.uidBloc WHERE .... ') or .... ;

    Mais certaines procédures de suppression complexes faisant intervenir jusqu'à six tables, j'ai eu l'idée d'utiliser les triggers.

    Si j'utilise la requète suivante depuis mon editeur MySQL (SQLyog) cela fonctionnne :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELIMITER |; 
    CREATE TRIGGER onDeleteWIBloc 
    BEFORE DELETE ON lstWIBloc 
    FOR EACH ROW 
    BEGIN 
      DELETE FROM lstWIBlocLang WHERE uidBloc = OLD.uidBloc; 
    END; | 
    DELIMITER ;|

    Mais si j'utilise la même requète depuis PHP cela ne fonctionne pas (Il déclare une erreur de syntaxe dans la requète)

    J'ai essayé avec $mysqli->real_query et aussi avec $mysqli->multi_query

    Est-il possible de créer des triggers depuis PHP ? Si oui où se trouve mon erreur ? Sinon, tant pis je laisse tomber les triggers, car il est indispensable que PHP mette à niveau la base de donnée tout seul sans intervention de ma part sur la structure de la base

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    je ne vois pas pourquoi tu veux créer tes trigger au fur et à mesure : tu crées tous les trigger dont tu as besoin à la création de ta base et c'est terminé.

    PS : les triggers et les procédures stockées sont accessible qu'à partir de MySQL 5.0.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 123
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    Le problème c'est que le code PHP en question sera redistribué sur N sites clients (chaque site ayant sa propre base) , avec ou sans contrats de mise à jour.

    En conséquence, lors de la modification des script PHP (nouvelles fonctionnalités par exemple), il peut être nécessaire d'adapter la base de donnée, ce qui sera fait automatiquement par un script updateDB.php si le numéro de révision courant de la base est inférieur à celui requis par la version courante du script... Que le client parte avec une base vide ou une base déjà existante, la MAJ de la structure se fera d'une manière transparente

    En plus, en fonction de la présence ou de l'absence de contrats de maintenance, le numéro de version des scripts n'évoluera pas nécessairement à la même vitesse ...

    Avec la méthode que j'ai choisi, la seule chose que j'ai à faire pour mettre à jour n'importe quel client est de lui donner le nouveau répertoire contenant les scripts (genre 2.2.15) et de lui refiler le version.php qui afin que l'exécution soit transférée vers le nouveau dossier, suite à quoi l'ancien dossier peut être supprimé (ce version.php contient aussi le numéro de version de la base requis)

  4. #4
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    tu ne m'as pas dit quelle version de MySQL tu avais : 5 ou inférieur ?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par trotters213
    tu ne m'as pas dit quelle version de MySQL tu avais : 5 ou inférieur ?
    MySQL 5.0.27 : c'est écrit dans le titre trotters


    Cordialement, Julp.

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

Discussions similaires

  1. [MySQL] Création de trigger depuis PHP
    Par Shiva dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/01/2007, 13h16
  2. creation de trigger
    Par freestyler dans le forum Administration
    Réponses: 40
    Dernier message: 12/12/2006, 09h57
  3. [SGBD] Problème Php5 et Mysql5
    Par sorby dans le forum Installation
    Réponses: 18
    Dernier message: 09/03/2006, 15h23
  4. [PL/SQL] Creation de triggers dans transaction
    Par globeriding dans le forum Oracle
    Réponses: 15
    Dernier message: 07/02/2006, 11h33
  5. creation de trigger
    Par mitsubi dans le forum SQL
    Réponses: 3
    Dernier message: 12/09/2003, 15h13

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