|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Chauvin Baptiste Inscription : décembre 2009 Messages : 59 ![]() |
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 :
Code :
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). |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Petite question, a quoi sert votre jointure dans le delete du trigger ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Chauvin Baptiste Inscription : décembre 2009 Messages : 59 ![]() |
Comme je le disais : "j'ai testé pas mal de modification sur mon trigger, du plus logique au plus farfelu... en désespoir de cause."
Donc la réponse est: surement à rien mon capitaine! Mais sans cette jointure il ne fonctionne malheureusement pas mieux. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
idnews dans votre table historique est bien une clé primaire ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Chauvin Baptiste Inscription : décembre 2009 Messages : 59 ![]() |
Non dans la table 'historique' le champ 'idnews' est en clé étrangère pas primaire. 'idnews' est la clé primaire de la table 'news'.
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
mettez urgemment un index sur cette colonne alors
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Chauvin Baptiste Inscription : décembre 2009 Messages : 59 ![]() |
Vous me suggérez de mettre un index sur chaque clé étrangère de la table 'historique' ?
Ceci devrait en effet diminuer le temps de recherche lors de mes requêtes (et je vous remercie pour ce conseil) mais cela ne devrait pas avoir d'incidence sur le "non-fonctionnement" de mon trigger, n'est-il pas? |
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
00
|
|
|
#9 | |
|
Nouveau Membre du Club
![]() Chauvin Baptiste Inscription : décembre 2009 Messages : 59 ![]() |
Citation:
C'est pour ça que j'ai fourni une image de mon MPD et le bout de code correspondant aux contraintes des tables, quelque chose a du m'échapper. |
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
pourquoi mettre delimiter dans le script de votre trigger ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#11 | ||
|
Nouveau Membre du Club
![]() Chauvin Baptiste Inscription : décembre 2009 Messages : 59 ![]() |
Aucune idée... dans les exemples que j'ai trouvés il y a avait souvent DELIMITER je l'ai donc intégré à mon trigger.
Je viens de testé sans, changement de message d'erreur Code :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRIGGER deleteNewsHisto BEFORE DELETE ON news FOR EACH ROW BEGIN DELETE FRO' at line 1 |
||
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Je posais la question, car il n'y a pas d'autres instructions dans votre trigger, alors j'ai pensé que le source du trigger n’était pas complet...
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Ce que je ne comprends pas bien, c'est pourquoi faire un trigger qui a l'air de faire ce pour quoi le ON DELETE CASCADE d'une clé étrangère est prévu ? Pourquoi vouloir réinventer la poudre ?
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#14 | |
|
Membre confirmé
![]() |
Bonjour,
Petite précision : Citation:
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com