bonjour
piste
svp
Version imprimable
bonjour
piste
svp
Salut !
Je suppose que tu ne veux pas utiliser les clauses CASCADE sur tes contraintes ?
Peux-tu nous dire ce que tu as essayé, et quels sont les problèmes ?
Si tu as cherché un peu sur le net, tu as dû trouver la syntaxe générale...
Tu accèdes aux colonnes de ta ligne en cours de suppression avec
En utilisant cela, tu pourras faire tes DELETE sur les autres tables...Code:
1
2 SELECT TonId FROM DELETED
Bonjour,
Exact, en écrivant :
@++ ;)Code:
1
2
3 DELETE FROM maTableDeClePrimaire FROM dbo.maTableDeClePrimaire PK JOIN DELETED D ON D.maColonne = PK.ID
Bonjour,
Les DDL de vos tables ne contiennent pas les clés étrangères.
Comme votre trigger est un AFTER trigger, vous supprimez les lignes de JOUER et APPARTENIR après avoir supprimé celles de TITRE, ce qui ne peut pas marcher avec des contraintes de clé étrangère, d'où votre erreur.
Il vous faudrait supprimer le trigger que vous avez écrit et le remplacer par un trigger INSTEAD OF, comme celui-ci :
Ne traitez jamais les lignes de tables avec des variables, que ce soit dans un trigger ou une procédure stockée. C'est faux et lent.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 CREATE TRIGGER TR_IOF_TITRE INSTEAD OF DELETE ON TITRE AS BEGIN DELETE FROM dbo.JOUER FROM dbo.JOUER J JOIN DELETED D ON J.NOMTITR = D.NOMTITR DELETE FROM dbo.APPARTENIR FROM dbo.APPARTENIR A JOIN DELETED D ON J.NOMTITR = D.NOMTITR DELETE FROM dbo.TITRE FROM dbo.TITRE T JOIN DELETED D ON T.NOMTITR = D.NOMTITR END
Votre trigger dans ce cas n'est pas ensembliste. Regardez les effets que cela produit ...
@++ ;)