[SQL 2008R2] Trigger de suppression sur une table récursive
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:
Code:
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 |
1) Est-ce que mon instruction (a) va rappeler récursivement mon trigger?
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