Por que não podemos ter vários caminhos em cascata?


9

Você pode ver que muitas perguntas foram feitas sobre vários caminhos em cascata . Por exemplo:

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

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

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

No entanto, pelo que vejo e entendo, é totalmente aceitável que você deseje excluir um registro filho em muitos e não apenas em uma condição da exclusão dos registros mestre relacionados.

Enquanto em uma pergunta é dito que o SQL Server tenta ser seguro, impedindo que isso aconteça, eu realmente não entendo o que pode dar errado se tivermos vários caminhos em cascata e quais problemas ele impede para torná-lo seguro ?

Espero que alguém possa me explicar isso, em palavras simples e simples, de preferência usando exemplos do que pode dar errado no caso de vários caminhos em cascata.

Respostas:


6

Esta pergunta "o que pode dar errado" só pode ser respondida pelos desenvolvedores da Microsoft ou da Sybase. Quando existem vários caminhos em cascata para o mesmo registro, é possível que o código tente excluí-lo várias vezes. Se não for construído para lidar com a possibilidade de o registro a ser excluído ter sido excluído, poderá ocorrer um erro. Aparentemente, esse problema realmente existe (ou acredita-se que exista!); Portanto, em vez de corrigi-lo, a implementação evita-o, impedindo a definição de caminhos em cascata duplicados. É claramente um atalho, porque outros DBMS não têm problemas com essa situação.


2
você acha que depois de 20 anos de SQL Server, eles dar a volta a corrigir este problema ...
Jeremy Holovacs
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.