Si su base de datos tiene una RI adecuada definida para ella, entonces no debería haber ningún caso de integridad de datos comprometida. Todas las tablas relacionadas deben tener RI declarativa, lo que significa que no se puede eliminar un elemento primario mientras todavía tenga elementos secundarios.
Además, si tiene un código que solo está borrando algunas de las filas a veces, entonces esa es una codificación deficiente y pruebas deficientes. Este tipo de acciones debe ser una transacción única. Su sugerencia de utilizar un procedimiento almacenado es un gran enfoque para resolver ese problema y es bastante estándar.
Como ya se ha mencionado, los activadores en cascada tienen el peligro de eliminar filas que alguien no tenía la intención de eliminar. Tenga en cuenta que, en ocasiones, es posible que las personas accedan a sus datos desde algún lugar fuera de su aplicación, especialmente cuando solucionan problemas de datos. Cuando alguien accidentalmente intenta eliminar al padre incorrecto y obtiene un error de RI que es bueno. Cuando accidentalmente intentan eliminar al padre incorrecto, no solo elimina ese padre sino 20 niños en otras 5 tablas, eso es malo.
Además, las eliminaciones en cascada están muy ocultas. Si un desarrollador está codificando una eliminación para el padre, entonces debe saber que tiene que usar el procedimiento de eliminación de almacenamiento para cuidar a los niños.Es mucho más preferible que un desarrollador no codifique eso, obtenga un error y corrija su código (o se dé cuenta de que realmente no desea hacer todo eso) de lo que es tener un programador para lanzar una eliminación y tener nadie se da cuenta de que está matando a los niños hasta que el código se haya puesto en marcha.
IMO, prefiero que mis desarrolladores conozcan la aplicación en lugar de hacer que les resulte más fácil ignorarla.
Totally. Gran respuesta y bien puesta. A Data Integrity siempre se le ha prestado muy poca atención y, por lo general, comienza a surgir dentro de unos años y muchas veces termina estrangulando a muchas empresas; ya no pueden innovar y cambiar debido a decisiones erróneas tomadas hace mucho tiempo sobre la recopilación de datos. –
Parece haber cierto estigma asociado con la eliminación en cascada debido a los posibles accidentes al eliminar datos manualmente. Personalmente, he tenido algunas malas experiencias con él, pero sigo de acuerdo en que es una forma más segura de mantener una integridad de datos estricta. Por otro lado, todavía trato de evitar el uso de cascada. –