OT: SQL Server 2005 (Delete en cascada)

29/11/2006 - 14:37 por Paul | Informe spam
Hola,
Estoy usando SQL Server 2005, y tengo una tengo el siguiente problema:

Tabla Pieza( Id, Nombre,)
Tabla Composición, que indica que una pieza esta compuesta por otras
piezas:
Composicion(Id, IdPiezaPadre, idPiezaHija)

Si hago una relación entre "Pieza.Id" y "Composición.IdPiezaPadre" y
marca actualizar y eliminar en cascada, todo va correctamente, pero si
ahora pongo una segunda relación entre "Pieza.Id" y
"Composición.IdPiezaHija" y marca actualizar y eliminar en cascada,
resulata que me da un error de bucle.

Yo quiero que cuando elimine una pieza de la tabla Piezas se eliminaran
los registros de la tabla composición que tuvieran en el campo
IdPiezaPadre, idPiezaHija igual al id de la tabla piezas.

En cambio si no pongo lo de eliminar en cascada, y hago un Dataset de
la BBDD en el Dataset si que puedo hacer los dos deletes en cascada y
funciona correctamente.

Como hacerlo tamnien en SQL Server 2005? Creo que es muy simple, no se
pq no me deja hacerla

Gracias
 

Leer las respuestas

#1 Alberto Poblacion
29/11/2006 - 15:14 | Informe spam
"Paul" wrote in message
news:
Tabla Pieza( Id, Nombre,)
Composicion(Id, IdPiezaPadre, idPiezaHija)
[...]
si ahora pongo una segunda relación entre "Pieza.Id" y
"Composición.IdPiezaHija" y marca actualizar y eliminar en
cascada, resulata que me da un error de bucle.
[...]
Como hacerlo tamnien en SQL Server 2005? Creo que es muy simple,
no se pq no me deja hacerla



Pues no, me temo que no se puede. Yo también he intentado hacer algo
parecido, y no hubo manera de que el Sql Server se lo tragara. Al final puse
ON DELETE CASCADE en una sola de las dos foreign keys, en la otra quité el
foreign key, y recurrí a usar Triggers para hacer el borrado en cascada y
para mantener la integidad referencial sobre el otro campo.

Preguntas similares