Perché non possiamo avere più percorsi a cascata?


9

Puoi vedere che sono state poste molte domande su più percorsi a cascata . Per esempio:

/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

Tuttavia, da quello che vedo e capisco, è del tutto OK che si desidera eliminare un record figlio su molti e non solo una condizione della cancellazione dei record master correlati.

Mentre in una domanda si dice che SQL Server cerca di essere sicuro impedendo che ciò accada, davvero non capisco che cosa potrebbe andare storto se abbiamo più percorsi a cascata e quali problemi impedisce di renderlo sicuro ?

Spero che qualcuno me lo spieghi, in parole chiare e semplici, preferibilmente usando esempi di cosa potrebbe andare storto in caso di più percorsi a cascata.

Risposte:


6

A questa domanda "cosa può andare storto" si può rispondere solo dagli sviluppatori di Microsoft o Sybase. Quando sono presenti più percorsi in cascata nello stesso record, è possibile che il codice possa tentare di eliminarlo più volte. Se non è costruito per gestire la possibilità che il record da eliminare sia già stato eliminato, potrebbe generare un errore. Apparentemente questo problema esiste davvero (o si pensa che esista!), Quindi invece di risolverlo, l'implementazione lo evita impedendo la definizione di duplicati percorsi a cascata. È chiaramente una scorciatoia, perché altri DBMS non hanno problemi con questa situazione.


2
penseresti che dopo 20 anni di SQL Server, avrebbero
risolto il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.