Hello,
j'ai une table avec une structure arborescente : chaque élément connait l'id de son parent. La "racine" de l'arbre a un id de parent qui vaut 0.
Lorsque je détruis un élement de cet arborescence, je veux détruire tous ses "descendants". Je pensais faire un trigger, qui, quand je détruis un élément, va détruire en cascade tous les éléments enfants. J'ai fait ça :
Code :
- create trigger deleteEnCascade before delete on hierarchie
- for each row delete from hierarchie where old.parentId = old.elementId;
|
Bien sur ça marche pas, je ne peux pas faire référence au nom de la table dans l'instruction du trigger :
Code :
- ERROR 1442 (HY000): Can't update table 'hierarchie' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
Je pensais mettre une FK sur le parent. On ne peut pas placer une FK dépendant de sa propre table.
Je pensais faire une procédure stockée récursive, MySQL ne les gère pas :x
Comment faire ? Vais-je être obligé de faire ça côté application ? Quelqu'un a une autre solution ?
Message édité par Djebel1 le 24-04-2006 à 17:32:03