sql >> Base de Datos >  >> RDS >> Sqlserver

¿Debo usar la regla ELIMINAR 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á bien que DELETE ORDERS elimine las ORDER_LINES asociadas porque claramente desea eliminar este pedido, que consta de un encabezado y algunas líneas. Por otro lado, ELIMINAR CLIENTE no debe eliminar los PEDIDOS asociados porque los PEDIDOS son importantes por derecho propio, no son solo atributos de un cliente.

Una forma de pensar en esto es:si emito DELETE X y también elimina Y, ¿seré feliz o infeliz? Y si emito ELIMINAR X y me dicen "no se puede eliminar X porque Y existe", ¿me alegrará la protección o me irritarán las molestias?