Nolem a écrit :
Salut,
J'ai pas bien saisie la syntaxe. J'ai l'impression que la syntaxe est différente du petit select, update, etc. habituel. Ce qui me perd
. J'ai bien vu que c'est seulement à partir de Mysql 5 qui accepte les trigger(s). J'ai vu que le gros avantages permet de gérer et de manipuler des données directement par Mysql. J'ai vraiment la bonne impression que c'est très pratique et plus rapide au final. Le soucis, je ne vois pas comment mettre ça en oeuvre. Est ce que les trigger(s) est/sont une pratique courante ? Est ce que Alsacreations les utilise par exemple ? Avez vous un petit lien (mis à part la doc officielle que j'ai parcourue mais qui me donne peu de mis en pratique) ou mieux un tuto ?
Merci par avance et bonne soirée à vous
La syntaxe est differente des requetes classiques car ce n'est pas une requete.
C'est une syntaxe que tu lance une seule fois pour fabriquer le trigger et une fois en place on l'oublie.
La syntaxe qu'on t'as indiqué permet de fabriquer un déclencheur qui sera ensuite toujours existant, si tu veux le modifier par la suite, il faudra imperativement ajouter un drop trigger nomdutrigger avant la syntaxe de création, sans quoi mysql te dira que le trigger est déjà éxistant.
Pour comparer c'est un peu comparable à des fonctions en php (attention mysql gère aussi les fonctions et procédures stockées, qui ne sont pas des triggers).
Pour ce qui est de l'utilisation, tout dépend de tes besoins et de tes serveurs, au boulot j'ai un serveur mysql sur bixeon et 4Gb de ram pour lui tout seul, j'ai donc tendance à ne pas me priver en triggers et procédures stockées pour décharger un peu le serveur LAP (bah oui un LAMP sans mysql

), de plus si c'est sur un bon serveur, on gagne souvent en rapidité d'execution.
J'ai un traitement qui se faisait sur une appli windev avec des kilos de requetes, j'ai passé ça dans une procédure stockées, ça va 6-8 fois plus vite (on économise les échange appli<->mysql pour les requetes), c'est pareil pour les triggers.
Si un algo réclame plusieurs requetes et est appliqué à chaque update d'une table alors sans hésitation, il faut le passer en trigger, si le serveur mysql le permet (un LAMP sur un PC familial de puissance standard, le gain ne sera pas significatif).
A fortiori si apache et mysql ne sont pas sur la même machine, moins ils ont à discuter plus ça va vite, une requete c'est minimum 15ms sur un réseau local, 10 requetes c'est donc 1.5 dixième de seconde, ça peut vite monter.