47 votes

Dois-je utiliser la CASCADE de la SUPPRESSION de la règle?

Dupliquer: Quand/Pourquoi pour utilisation en Cascade dans SQL Server?

J'ai toujours eu trop peur d'utiliser DELETE CASCADE, mais comme je suis plus à l'aise (lazy :D), je suis en train de penser comment mauvais peut-il être, est-il préférable de pratiquer l'utiliser ou dois-je l'éviter et de nettoyer mes clés étrangères etc à l'ancienne (avec des procédures stockées)?

97voto

Tony Andrews Points 67363

On DELETE CASCADE est bien, mais seulement quand les lignes dépendantes sont vraiment une logique d'extension de la ligne à supprimer. Par exemple, son OK pour SUPPRIMER les COMMANDES pour supprimer les ORDER_LINES parce que clairement vous souhaitez supprimer cet ordre, qui se compose d'un en-tête et de quelques lignes. D'autre part, de SUPPRIMER le CLIENT ne doit pas supprimer les COMMANDES parce que les COMMANDES sont importants en eux-mêmes, ils ne sont pas seulement les attributs d'un client.

Une façon de penser à ce sujet est: si j'problème, SUPPRIMEZ X et il supprime aussi Y, vais-je être heureux ou malheureux? Et si j'problème, SUPPRIMEZ X et me dit "impossible de supprimer le X parce que Y existe" vais-je être content de la protection, ou irrité le problème?

13voto

Galwegian Points 29966

Je préfère avoir le contrôle sur exactement ce qui est supprimé (en déclarant explicitement), donc je optent généralement pour supprimer via des procédures stockées, et de ne pas utiliser les suppressions en cascade.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X