En MSSQL 2005 yo sólo golpeó el mensaje de error infame:¿Cuál es el problema con la clave externa en cascada de múltiples rutas y ciclos?
Presentación de restricción FOREIGN KEY XXX YYY mesa puede causar ciclos o múltiples rutas en cascada. Especifique ON DELETE NO ACTION o ON UPDATE NO ACTION, o modifique otras restricciones FOREIGN KEY.
Ahora, StackOverflow tiene varios temas sobre este mensaje de error, así que ya tengo la solución (en mi caso tendré que usar activadores), pero tengo curiosidad de por qué hay tal problema en absoluto.
Según tengo entendido, hay básicamente dos escenarios que quieren evitar: un ciclo y varias rutas. Un ciclo sería cuando dos tablas tienen cascadas claves foráneas entre sí. De acuerdo, un ciclo puede abarcar varias tablas también, pero este es el caso básico y será más fácil de analizar.
Las rutas múltiples serían cuando TableA tiene claves externas a TableB y TableC, y TableB también tiene una clave externa a TableC. Nuevamente, este es el caso básico mínimo.
No puedo ver ningún problema que pueda surgir cuando se elimine o actualice un registro en cualquiera de esas tablas. Claro, es posible que deba consultar la misma tabla varias veces para ver qué registros necesitan actualización/eliminación, pero ¿es realmente un problema? ¿Es esto un problema de rendimiento?
En otros temas de SO las personas llegan a etiquetar usando cascadas como "risky" y afirman que "resolving cascade paths is a complex problem". ¿Por qué? ¿Dónde está el riesgo? ¿Dónde está el problema?
¿Reemplazarlo con un gatillo lo haría mejor? Por supuesto, existe un enfoque como "no usar claves foráneas en absoluto" y hacer todo desde el código. No creo que deba decirte por qué creo que es una mala idea ... –