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