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
Partager