Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/12/2006, 15h52   #1
Membre du Club
 
Inscription : juillet 2005
Messages : 123
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 123
Points : 55
Points : 55
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 :
$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 :
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
frochard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2006, 16h17   #2
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

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.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2006, 18h01   #3
Membre du Club
 
Inscription : juillet 2005
Messages : 123
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 123
Points : 55
Points : 55
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)
frochard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2006, 08h46   #4
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
tu ne m'as pas dit quelle version de MySQL tu avais : 5 ou inférieur ?
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2006, 10h16   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h05.


 
 
 
 
Partenaires

Hébergement Web