Bonjour à tous,

J'ai un problème de durée d'exécution trop longue avec un trigger before delete.
"Fatal error: Maximum execution time of 300 seconds exceeded"
Grosso modo j'ai une table 'news', une table 'usager' et une table 'historique', quand j'efface une news je souhaite que mon trigger efface automatiquement les lignes correspondant à cette news dans ma table 'historique'.



J'ai essayé de modifier mon trigger, avec ou sans jointure, mais le résultat est toujours le même.
Voici les contraintes de mes tables:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- Contrainte pour la table 'news'
ALTER TABLE `news`
  ADD CONSTRAINT `FK_news_usager` FOREIGN KEY (`idusager`) REFERENCES `usager` (`idusager`);
 
-- Contraintes pour la table `historique`
ALTER TABLE `historique`
  ADD CONSTRAINT `FK_histo_adresse` FOREIGN KEY (`idadresse`) REFERENCES `adresse` (`idadresse`),
  ADD CONSTRAINT `FK_histo_annuaire` FOREIGN KEY (`idannuaire`) REFERENCES `annuaire` (`idannuaire`),
  ADD CONSTRAINT `FK_histo_catref` FOREIGN KEY (`idcatref`) REFERENCES `catref` (`idcatref`),
  ADD CONSTRAINT `FK_histo_contact` FOREIGN KEY (`idcontact`) REFERENCES `contact` (`idcontact`),
  ADD CONSTRAINT `FK_histo_ficheref` FOREIGN KEY (`idficheref`) REFERENCES `ficheref` (`idficheref`),
  ADD CONSTRAINT `FK_histo_missionref` FOREIGN KEY (`idmissionref`) REFERENCES `missionref` (`idmissionref`),
  ADD CONSTRAINT `FK_histo_news` FOREIGN KEY (`idnews`) REFERENCES `news` (`idnews`),
  ADD CONSTRAINT `FK_histo_usager` FOREIGN KEY (`idmodificateur`) REFERENCES `usager` (`idusager`);
La dernière version de mon Trigger est celle-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
DROP TRIGGER IF EXISTS deleteNewsHisto;
DELIMITER //
CREATE TRIGGER deleteNewsHisto 
BEFORE DELETE ON news
FOR EACH ROW
BEGIN
DELETE FROM historique 
INNER JOIN news 
ON news.idnews = historique.idnews
WHERE historique.idnews = news.OLD.idnews;
END
//
DELIMITER ;
Si vous voyez ce qui ne va pas, je vous écoute d'une oreille attentive.

Question supplémentaire: si je veux ajouter un delete à ce trigger pour qu'il efface en plus les occurences liées à ma news dans une autre table, est-ce possible? (je veux dire sans écrire un autre trigger mais en ajoutant seulement cette instruction à mon trigger existant).