Bonjour, je suis débutant en SQL-Server et triggers.
J'ai une table "Tache" composé de 2 champs:
- id, uniqueidentifier et clé primaire
- Parente, uniqueidentifier qui fait référence à la tache parente
J'ai donc une arborescence structurée de taches (je précise qu'une tache ne peut pas être parente et enfant en même temps d'une autre tache)
Une table "intervenant"
- id, uniqueidentifier et clé primaire
Une table "Tache_intervenant" pour lier des intervenants à des taches
- Tache, uniqueidentifier clé primaire
- Intervenant, uniqueidentifier clé primaire
Je voudrais créer un trigger qui lors de la suppression d'une tache me supprime toutes les taches enfants (récursivement) ainsi que toutes les lignes de ma table "Tache_Intervenant" faisant référence à ma tache et donc aux taches enfants (récursivement aussi)
J'ai fait ceci et j'ai quelques questions:
1) Est-ce que mon instruction (a) va rappeler récursivement mon trigger?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TRIGGER Tache_DEL_TRIGGER ON Tache INSTEAD OF DELETE AS BEGIN --a)je supprime les taches enfant (au premier niveau) de ma tache supprimée DELETE Tache WHERE Parente IN (SELECT id FROM Deleted) --b)je supprime le lignes dans ma table de liaison qui contiennent l'id de la tache DELETE Tache_Intervenant WHERE Tache IN (SELECT id FROM Deleted) --c)apres avoir supprimé les taches enfant, je supprime la tache concernée DELETE Tache WHERE id IN (SELECT id FROM Deleted) END GO
2) Est-ce que mon instruction (c) va rappeler récursivement mon trigger?
3) Si j'ai un trigger DELETE sur ma table "Tache_Intervenant" va-t-il se déclencher?
Merci pour vos réponses
Partager