Pregunta

Tal vez esto es una especie de pregunta ingenua ... pero creo que siempre debemos tener eliminaciones en cascada y actualizaciones. Pero lo que quería saber ¿hay problemas con él y cuando debería no debería hacerlo? Realmente no puedo pensar en un caso en este momento donde no se quiere hacer una eliminación en cascada, pero estoy seguro que hay uno ... pero ¿qué pasa con las actualizaciones que debe hacerse siempre?

Entonces, ¿puede alguien lista de los pros y los contras de eliminaciones en cascada y actualizaciones, por favor? Gracias.

¿Fue útil?

Solución

Pros:

  • Cuando se elimina una fila de la tabla primaria de todas las filas de clave externa se eliminan
  • Este es generalmente más rápido que la implementación de este con disparadores
  • filas huérfanos es poco probable

Contras

  • Los huérfanos son posibles
  • Si por error se elimina una fila de la tabla padre se eliminarán todos los registros en las correspondientes tablas secundarias y será PITA para averiguar lo que ha eliminado

Otros consejos

Esto depende de las entidades que están contenidos en las tablas:. Si el lado de la clave externa no puede existir sin la parte de la clave primaria, que tiene sentido haber borrado en cascada

E. g .: Un elemento línea de factura no tiene ningún derecho a sobrevivir si se elimina la factura.

Pero si tiene una clave externa utilizada para la relación "trabaja para" para la relación entre un empleado y su / su jefe, ¿le gustaría eliminar el empleado si las hojas jefe de la empresa?

Además:. Un problema técnico es que algunos (mapeo relacional de objetos) herramientas ORM se confunden si las entradas de tabla dependientes cambian sin que sean responsables de que

Pros:

  • La integridad de datos -. Ayuda situaciones evitar Puede que un registro se refiere a algo que ya no está allí

Contras:

  • Rendimiento -. Eliminaciones en cascada / actualizaciones pueden ser sloooooooooooooooooooow
  • Complejidad -. Parece mayoría de la gente con la que trabajo no están acostumbrados a las cascadas, así que cuando se les da un nuevo proyecto que lo tiene, que son un poco sorprendido la primera vez que desencadenan una de estas cascadas
  • Como otros ya han mencionado, puede echar las cosas a cuando se usa incorrectamente.

Pro:. Que le permite reducir la cantidad de sentencias SQL necesarias para llevar a cabo acciones de eliminación

En contra: se podría eliminar los datos que tanto pueden ser importantes para la auditoría en un momento posterior. Por lo que es importante mantenerlo incluso si se ha eliminado la fila principal. En este caso la clave externa debe recibir un valor NULL por ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top