Je n'arrive pas à faire fonctionner deux triggers en cascade ..

Jusqu' alors je supprimai tout en php, DELETE successif etc.
Pour economiser quelques requêtes et des lignes de code, je décide de profiter des déclencheurs ou plus communément appelé triggers.

Mon problème est le suivant :
J'ai 3 tables

'categorie'
'topic'
'message'

La table 'topic' possède un champ avec une contrainte d'intégrité sur le champ id (clef primaire) de la table 'categorie' ...
De même que la table 'message' possède un champ avec une contrainte d'intégrité sur le champ id (clef primaire) de la table 'topic' ...

Lorques je souhaite supprimer une categorie, j'aimerai que mes triggers réagissent en cascade :
Suppression des topics liés à la catégorie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
CREATE TRIGGER Suppr_Categ_Topics 
BEFORE DELETE ON categorie
FOR EACH ROW
DELETE FROM topic
WHERE topic.categID = Old.idcategorie;
Suppression des messages liés au topic
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
CREATE TRIGGER Suppr_Topics_Mess BEFORE DELETE ON topic
FOR EACH ROW
DELETE FROM message
WHERE message.topicID = Old.idtopic

Mais quand tout est (à mon sens) bien ficellé, j'obtien l'erreur suivante :

Cannot delete or update a parent row:
A foreign key constraint fails (`forum/message`, CONSTRAINT `fk_message_message` FOREIGN KEY (`messageoriginal`) REFERENCES `message` (`idmessage`) ON DELETE NO ACTION ON UPDATE NO ACTION)

comme si mes triggers n'existaient pas ... ou bien ai-je manqué un episode sur les triggers ?

Au secours !