Howdy, Tengo un problema donde necesito una cascada en varias claves externas que apuntan a la misma mesa ..MS SQL "ON DELETE CASCADE" ¿teclas externas múltiples que apuntan a la misma tabla?
[Insights]
| ID | Title |
| 1 | Monty Python |
| 2 | Spamalot |
[BroaderInsights_Insights]
| broaderinsight_id | insight_id |
| 1 | 2 |
Básicamente, cuando sea grabar uno o dos en los puntos de vista tabla se elimina necesito la relación de también se suprime ..
he intentado esto:
CREATE TABLE broader_insights_insights(id INT NOT NULL IDENTITY(1,1),
broader_insight_id INT NOT NULL REFERENCES insights(id) ON DELETE CASCADE,
insight_id INT NOT NULL REFERENCES insights(id) ON DELETE CASCADE,
PRIMARY KEY(id))
Go
esto da lugar a la advertencia de que la cascada "puede causar ciclos o camino cascada múltiple"
Así que he intentado añadir una cascada que sólo el insight_id y esto se traduce en:
"La instrucción DELETE en conflicto con la restricción REFERENCIA"
¿Alguna idea?
Gracias
Daniel
Tal eliminación en cascada rara vez es una buena idea. Piensa en lo que sucedería si también tienes "Vida de Brian" allí. Elimine LoB y elimine las cascadas para matar a Monty Python, que conecta en cascada para eliminar Spamalot. Como se trata de una relación circular, al eliminar cualquier miembro del círculo, se elimina todo el círculo. –
¿Estoy confundiendo las cascadas? pensé que el concepto era cuando el registro referenciado se eliminó la relación también se elimina? ¿Cómo sugerirías lograr esto? –
Debe realizar las eliminaciones en una transacción (lo más fácil es un proceso almacenado) en lugar de a través de eliminaciones en cascada. – HLGEM