2009-04-21 10 views
0

Existe-t-il un moyen de contourner ce problème dans SQL Server 2005?SQL Server 2005 - Clés étrangères avec suppression en cascade

(Ça me dérange, et chaque fois que je le rencontre, je me mets à la corde, mais c'est la première fois que je faisais face à ET j'étais sur Stack Overflow.)

DimensionTable:
id INT IDENTITY (1,1)

FactTable:
source_id INT NOT NULL,
target_id INT NOT NULL

J'ai créé une clé étrangère de "Fact.source_id" à "Dimension.id" et l'ai configurée avec suppression de cascade et mise à jour en cascade. Quand j'ai essayé de faire la même chose avec "Fact.target_id" j'ai eu une erreur disant "oh non, non, non" car il y a plusieurs chemins pour la cascade à suivre.

Il n'y a pas d'autres clés étrangères impliquées ici, seulement les deux que je veux créer. Je peux créer la deuxième clé étrangère sans la cascade, mais cela me semble assez caca. C'est un ensemble de tables qui seront maintenues à la main (très rarement elles seront touchées, donc le client ne paiera pas pour un gui de le faire.) Une telle suppression/mise à jour en cascade serait extrêmement utile, mais seulement si c'est sur les deux champs. (Je suis une ventouse pour la cohérence)

**** **** pleurnicherie

Répondre

1

Oui, utilisez un déclencheur INSTEAD OF. Il intercepte la commande DELETE et vous pouvez diriger la logique en conséquence.

0

Vous ne pouvez supprimer en cascade d'une relation. Suggérez-vous de configurer ceci dans les déclencheurs intead.

Questions connexes