9
votes

Quels sont les avantages et les inconvénients de la delete et des mises à jour en cascade?

Peut-être que c'est une sorte de question naïve ... mais je pense que nous devrions toujours avoir des suppressions et des mises à jour en cascade. Mais je voulais savoir y avoir des problèmes et quand devrions-nous ne pas le faire? Je ne peux vraiment pas penser à un cas en ce moment où vous ne voudriez pas faire de supprimer Cascade, mais je suis sûr qu'il y en a un ... Mais qu'en est-il des mises à jour devraient-elles être faites toujours?

Quelqu'un peut-il s'il vous plaît énumérer les avantages et les inconvénients des suppressions et des mises à jour en cascade? Merci.


0 commentaires

3 Réponses :


1
votes

Avantages:

  • Intégrité des données - peut aider à éviter les situations où un enregistrement fait référence à quelque chose qui n'est plus là.

    contre:

    • Performance - Les suppressions / mises à jour en cascade peuvent être SLOOOOOOOOOOOOOOOOOOOOWOW.
    • Complexité - Cela semble que la plupart des gens que je travaille ne sont pas habitués à cascades, alors lorsque vous leur donnez un nouveau projet qui l'a, ils ont un peu surpris la première fois qu'ils déclenchent l'une de ces cascades.
    • Comme d'autres personnes déjà mentionnées, peuvent vraiment gâcher les choses lorsqu'elles sont utilisées de manière incorrecte.

2 commentaires

Ou, sous forme standard, SLW O20


Votre point sur la performance n'a pas de sens. La cascade Les suppressions / mises à jour manuellement est plus lente que de laisser la base de données le gérer.



9
votes

Cela dépend des entités contenues dans les tableaux: si le côté de la clé étrangère ne peut pas exister sans le côté de la clé primaire, il est logique d'avoir une suppression en cascade.

e. G.: Un élément de ligne de facture n'a pas le droit de survivre si la facture est supprimée.

Mais si vous avez une clé étrangère utilisée pour la relation "travaille pour" pour la relation entre un employé et son patron, voudriez-vous supprimer l'employé si le patron quitte la société?

En outre: un problème technique est que certains outils de cartographie relative à un objet (objet) sont confus si des entrées de table dépendantes changent sans qu'ils soient responsables de cela.


4 commentaires

Je ne suis pas sûr de supprimer le patron exactement pour cette raison, je voudrais probablement inactiver la rangée


@Sqlmenace voudriez-vous garder tous les anciens employés à jamais dans une table d'employé? Mais j'espère que vous voyez le point: il y a des situations où l'enfant a une existence en soi, même si le parent est supprimé.


Je ne frappe pas de votre réponse, je dis simplement ce que je ferais ... Nous enregistrons tous les changements de toute façon et ils entrent dans une table d'historique..dépendants de la stratégie de la société que vous ne serez peut-être pas autorisés à supprimer les lignes non plus.


@SqLeaution Si vous n'êtes pas autorisé à supprimer des données, alors bien sûr, une suppression en cascade n'a pas de sens du tout, et le réglage CASCADE / RESTAIN / SET NULL est hors de propos.



12
votes

Avantages:

  • Lorsque vous supprimez une ligne de la table des parents, toutes les lignes de clé étrangère sont supprimées
  • Ceci est généralement plus rapide que de la mettre en œuvre avec des déclencheurs
  • Les rangées orphelines sont improbables

    contre

    • orphelins sont possibles
    • Si par erreur vous supprimez une rangée dans la table des parents, toutes les lignes des tables enfants correspondantes seront supprimées et ce sera pita pour déterminer ce que vous avez supprimé

0 commentaires