tipos - restricciones sql
¿Debería usar la regla CASCADE DELETE? (2)
Duplicado de: ¿ Cuándo / Por qué usar Cascading en SQL Server?
Siempre he tenido demasiado miedo de usar DELETE CASCADE, pero a medida que tengo más confianza (flojo: D), estoy pensando en qué tan malo puede ser, ¿es una buena práctica usarlo o debería evitarlo y limpiar mi claves extranjeras, etc., a la manera antigua (con procedimientos almacenados)?
Prefiero tener control sobre exactamente lo que se elimina (al declararlo explícitamente), por lo que generalmente opto por eliminar mediante procedimientos almacenados, y no para usar eliminaciones en cascada.
ON DELETE CASCADE está bien, pero solo cuando las filas dependientes son realmente una extensión lógica de la fila que se está eliminando. Por ejemplo, está OK para ELIMINAR ÓRDENES para eliminar los ORDER_LINES asociados porque claramente desea eliminar este orden, que consiste en un encabezado y algunas líneas. Por otro lado, DELETE CUSTOMER no debe eliminar los ORDERS asociados porque los ORDERS son importantes por derecho propio, no son solo atributos de un cliente.
Una forma de pensar sobre esto es: si publico DELETE X y también elimina Y, ¿estaré contento o descontento? Y si publico DELETE X y me dicen "no puedo borrar X porque Y existe", ¿estaré contento con la protección o me irritaré ante la incoherencia?