Lo que hace que esta base de datos en cascada se elimina cíclico?
-
03-10-2019 - |
Pregunta
Proveedor
(PK) - IdNombre
Stand
(PK) - IdVendorId - fk - eliminación en cascada si el Vendedor es eliminado)
Nombre
Elemento
(PK) - IdVendorId - (fk - eliminación en cascada si el Vendedor es eliminado)
Nombre
Precio
UnavailableItem
(PK) - ItemId - (fk - eliminación en cascada si el Ítem es eliminado)(PK) - StandId - (fk - eliminación en cascada si se elimina)
La base de datos anterior representa un estadio atlético.
Problema:
Puedo crear todo bien hasta que me agregue el último de Clave externa de la lista (FK_UnavailableItem_StandId_Stand_id) con una Regla de eliminación:CascadaSQL Compact 3.5 (usando VS Servidor de 2010 Explorer) reporta el siguiente error:La relación referencial resultará en un ciclo de referencia que no está permitido.
Entiendo que si me registro en el UnavailableItem tabla, y su Proveedor se elimina, intentará ser eliminado dos veces:
Sin embargo, este no parece ser cíclico para mí.La cascada-elimina la rama en dos caminos (se Eliminan los Stands y Elementos Eliminados) que ambos terminan en el mismo registro se elimina...pero no acaba allí.No hay ningún bucle infinito de cascada-elimina después de eso.Me estoy perdiendo algo, o se trata de una limitación de las herramientas que estoy utilizando?
Gracias por cualquier ayuda que se le puede ofrecer!
Solución
No se puede eliminar a través de Cascade dos ramas, se trata de una limitación de la herramienta. Pero supresión en cascada es generalmente una mala cosa que hacer a su base de datos pobres inocentes de todos modos. Eliminar en la tabla inferior y moverse hacia arriba. De esta forma si usted tiene 100000000000 registros en la parte inferior se puede hacer en lotes de rendimiento. Eliminar en cascada puede causar problemas de rendimiento.
Otros consejos
Suponiendo SSCE no permite eliminación en cascada a lo largo de dos caminos, se puede quitar la eliminación en cascada para UnavailableItem.StandId.
Al menos, todavía cascada cuando se elimina un proveedor, o un artículo.
Y si UnavailableItem todavía contiene filas de stands eliminados, al menos que pudo filtrarse a cabo al unir UnavailableItem con el soporte, cuando la construcción de recarga órdenes ...