Pourquoi ne pouvons-nous pas avoir plusieurs chemins en cascade?


9

Vous pouvez voir que de nombreuses questions ont été posées sur plusieurs chemins de cascade . Par exemple:

/programming/851625/foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths

/programming/6065501/multiple-cascade-delete-path-in-many-many-relationship-ef-4-1

/programming/27613117/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths-s

Cependant, d'après ce que je vois et comprends, il est tout à fait OK que vous voulez supprimer un enregistrement des enfants sur un grand nombre et non pas seulement une condition de la suppression des fiches connexes.

Alors que dans une question, il est dit que SQL Server essaie d'être sûr en empêchant cela de se produire, je ne comprends vraiment pas ce qui pourrait mal tourner si nous avons plusieurs chemins en cascade, et quels problèmes cela empêche-t-il de le rendre sûr ?

J'espère que quelqu'un pourra m'expliquer cela, en termes simples et simples, en utilisant de préférence des exemples de ce qui pourrait mal se passer en cas de chemins en cascade multiples.

Réponses:


6

Cette question "ce qui peut mal tourner" ne peut être répondue que par les développeurs de Microsoft ou Sybase. Lorsqu'il existe plusieurs chemins en cascade vers le même enregistrement, il est possible que le code tente de le supprimer plusieurs fois. S'il n'est pas construit pour faire face à la possibilité que l'enregistrement à supprimer ait déjà été supprimé, cela peut générer une erreur. Apparemment, ce problème existe réellement (ou on pense qu'il existe!), Donc au lieu de le résoudre, l'implémentation l'évite en empêchant la définition de chemins de cascade en double. C'est clairement un raccourci, car les autres SGBD n'ont aucun problème avec cette situation.


2
on pourrait penser qu'après 20 ans de SQL Server, ils
parviendraient
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.