-
Triggers avec mysql
Bonjour, je cherche à faire des triggers avec mysql (pas trop de souci coté déclaration) mais je n'arrive pas à trouver comment récupérer une donnée.
Je veux dire, lors de la suppression d'un champ dans la table catégories, un trigger s'active et supprime tous les articles dans la table articles ayant pour numéro de catégorie celle supprimée.
Le problème est là:
Requête :
Code:
DELETE FROM categories WHERE numcat=3
trigger : hop on demande un delete sur la table catégories, vite il faut que je supprime les articles. Mais comment récupérer le numéro de catégorie entré ?
Merci d'avance
-
A mon avis tu cherches à faire un ON DELETE CASCADE sur la foreign key de la table article référençant la table catégorie.
Donc pas de code, pas de trigger. Utilises tu INNODB ?
-
Utilises tu INNODB ?
non, je ne sais pas ce que c'est.
Ce que je voudrais, c'est que le trigger fasse delete from articles where numcat=numéro_de_la_catégorie_de_la_requete.
-
Si tu peux développer un trigger c'est que tu es en mysql 5 donc tu peux utiliser le moteur de stockage INNODB à la place de myisam (tu peux voir quel moteur de stockage est utilisé en regardant les scripts de créations des tables sur phpmyadmin).
Il est préférable d'utiliser INNODB pour pouvoir implémenter les contraintes d'intégrité référentielle (foreign key) et là tu peux utiliser ON DELETE CASCADE. C'est le meilleur moyen pour faire les choses proprement et tu as peut être déjà une clé étrangère.
Après si tu es en myisam et que tu ne peux pas le changer, il faut coder le trigger, pour ce qui est de récupérer la valeur supprimée, c'est quelque chose comme OLD.numcat
-
J'ai un projet dans lequel il me faut absolument 3 triggers, c'est pour ça que je cherche à faire ce principe, que je saurai expliquer.
Donc des delete en cascade, ce n'est pas envisageable.
Je vais voir pour INNODB et old., merci :)