Eliminación en cascada entre 3 tablas no me deja

01/09/2006 - 13:36 por Adria Grau Rovira | Informe spam
Buenos dias, estoy creando una Base de datos con SQLSERVER 2005, la cual
tiene 3 tablas, las llamaremos 1, 2, y 3

El problema viene en lo siguiente:
- Tengo una relacion 1:M entre la tabla 1 y la 2
- Otra relacion 1:M entre la tabla 3 y la 2

Y lo que no deja hacer es que al crear las relaciones ponerle en las dos que
elimine en cascada, lo he probado con Access 2003 y si que me deja y funciona
muy bien, pero en SQLSERVER 2005 no hay forma me dice el siguiente mensaje de
error:

[CODE]
No se puede crear la relación 'FK_tblMenuUsuario_tblMenuGrupo'.
Si especifica la restricción FOREIGN KEY 'FK_tblMenuUsuario_tblMenuGrupo' en
la tabla 'tblMenuUsuario', podrían producirse ciclos o múltiples rutas en
cascada. Especifique ON DELETE NO ACTION o UPDATE NO ACTION, o bien modifique
otras restricciones FOREIGN KEY.
No se pudo crear la restricción. Consulte los errores anteriores.
[/CODE]

¿Alguien podria decirme como solventar este problema,?

Preguntas similare

Leer las respuestas

#1 Maxi
01/09/2006 - 14:50 | Informe spam
Hola, es correcto y logico que fuere asi, de hecho si tenes 3 relaciones y
borras desde la cabecera va a borrar hacia abajo


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Adria Grau Rovira" escribió en
el mensaje news:
Buenos dias, estoy creando una Base de datos con SQLSERVER 2005, la cual
tiene 3 tablas, las llamaremos 1, 2, y 3

El problema viene en lo siguiente:
- Tengo una relacion 1:M entre la tabla 1 y la 2
- Otra relacion 1:M entre la tabla 3 y la 2

Y lo que no deja hacer es que al crear las relaciones ponerle en las dos
que
elimine en cascada, lo he probado con Access 2003 y si que me deja y
funciona
muy bien, pero en SQLSERVER 2005 no hay forma me dice el siguiente mensaje
de
error:

[CODE]
No se puede crear la relación 'FK_tblMenuUsuario_tblMenuGrupo'.
Si especifica la restricción FOREIGN KEY 'FK_tblMenuUsuario_tblMenuGrupo'
en
la tabla 'tblMenuUsuario', podrían producirse ciclos o múltiples rutas en
cascada. Especifique ON DELETE NO ACTION o UPDATE NO ACTION, o bien
modifique
otras restricciones FOREIGN KEY.
No se pudo crear la restricción. Consulte los errores anteriores.
[/CODE]

¿Alguien podria decirme como solventar este problema,?
Respuesta Responder a este mensaje
#2 Adria Grau Rovira
01/09/2006 - 21:31 | Informe spam
Lo siento, pero sin entender porque no me deja crear dos relaciones entre las
tablas 1 y 2, y la 3 y 2 para poder eliminar en cascada, cuando elimine algun
dato en cualquiera de las dos tablas externas, mientras que en Access 2003 lo
puedo hacer sin problemas y funciona de lo mas bien.

"Maxi" escribió:

Hola, es correcto y logico que fuere asi, de hecho si tenes 3 relaciones y
borras desde la cabecera va a borrar hacia abajo


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Adria Grau Rovira" escribió en
el mensaje news:
> Buenos dias, estoy creando una Base de datos con SQLSERVER 2005, la cual
> tiene 3 tablas, las llamaremos 1, 2, y 3
>
> El problema viene en lo siguiente:
> - Tengo una relacion 1:M entre la tabla 1 y la 2
> - Otra relacion 1:M entre la tabla 3 y la 2
>
> Y lo que no deja hacer es que al crear las relaciones ponerle en las dos
> que
> elimine en cascada, lo he probado con Access 2003 y si que me deja y
> funciona
> muy bien, pero en SQLSERVER 2005 no hay forma me dice el siguiente mensaje
> de
> error:
>
> [CODE]
> No se puede crear la relación 'FK_tblMenuUsuario_tblMenuGrupo'.
> Si especifica la restricción FOREIGN KEY 'FK_tblMenuUsuario_tblMenuGrupo'
> en
> la tabla 'tblMenuUsuario', podrían producirse ciclos o múltiples rutas en
> cascada. Especifique ON DELETE NO ACTION o UPDATE NO ACTION, o bien
> modifique
> otras restricciones FOREIGN KEY.
> No se pudo crear la restricción. Consulte los errores anteriores.
> [/CODE]
>
> ¿Alguien podria decirme como solventar este problema,?



Respuesta Responder a este mensaje
#3 Maxi
03/09/2006 - 16:32 | Informe spam
Hola, mira este ejemplo a mi me funciona prfectamente:

use northwind
go

create table dbo.pedidos (id int primary key, fecha datetime)
go

create table dbo.pedidos_ln (pedido_id int not null, linea int not null,
articulo varchar(30))
go

create table dbo.pedidos_ln_del (pedido_id int,linea int, del int, cantidad
int, fecha datetime)
go

alter table dbo.pedidos_ln add constraint pk1 primary key (pedido_id,linea)
go

alter table dbo.pedidos_ln add constraint nn foreign key (pedido_id)
references dbo.pedidos(id) on delete cascade
go

alter table dbo.pedidos_ln_del add constraint nn2 foreign key
(pedido_id,linea)
references dbo.pedidos_ln(pedido_id,linea) on delete cascade
go


insert into pedidos values (1,getdate())
insert into pedidos values (2,getdate()+1)
insert into pedidos values (3,getdate()+2)
insert into pedidos values (4,getdate()+3)
insert into pedidos values (5,getdate()+4)


insert into pedidos_ln values (1,1,'mouse')
insert into pedidos_ln values (1,2,'hdd')
insert into pedidos_ln values (1,3,'pilas')
insert into pedidos_ln values (2,1,'notebook')
insert into pedidos_ln values (2,2,'tv')


insert into pedidos_ln_del values (1,1,1,10,getdate()+20)
insert into pedidos_ln_del values (1,1,2,10,getdate()+30)
insert into pedidos_ln_del values (1,1,3,10,getdate()+40)
insert into pedidos_ln_del values (1,2,1,10,getdate()+20)
insert into pedidos_ln_del values (1,3,1,10,getdate()+30)


delete from pedidos_ln where pedido_id=1 and linea=1


select * from pedidos_ln_del where pedido_id =1 and linea=1


select * from pedidos_ln_del where pedido_id=1


delete from pedidos where id=1


select * from pedidos_ln where pedido_id=1

drop table pedidos_ln_del
drop table pedidos_ln
drop table pedidos



Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker
www.sqlgururs.org
Email:


"Adria Grau Rovira" wrote in
message news:
Lo siento, pero sin entender porque no me deja crear dos relaciones entre
las
tablas 1 y 2, y la 3 y 2 para poder eliminar en cascada, cuando elimine
algun
dato en cualquiera de las dos tablas externas, mientras que en Access 2003
lo
puedo hacer sin problemas y funciona de lo mas bien.

"Maxi" escribió:

Hola, es correcto y logico que fuere asi, de hecho si tenes 3 relaciones
y
borras desde la cabecera va a borrar hacia abajo


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Adria Grau Rovira" escribió
en
el mensaje news:
> Buenos dias, estoy creando una Base de datos con SQLSERVER 2005, la
> cual
> tiene 3 tablas, las llamaremos 1, 2, y 3
>
> El problema viene en lo siguiente:
> - Tengo una relacion 1:M entre la tabla 1 y la 2
> - Otra relacion 1:M entre la tabla 3 y la 2
>
> Y lo que no deja hacer es que al crear las relaciones ponerle en las
> dos
> que
> elimine en cascada, lo he probado con Access 2003 y si que me deja y
> funciona
> muy bien, pero en SQLSERVER 2005 no hay forma me dice el siguiente
> mensaje
> de
> error:
>
> [CODE]
> No se puede crear la relación 'FK_tblMenuUsuario_tblMenuGrupo'.
> Si especifica la restricción FOREIGN KEY
> 'FK_tblMenuUsuario_tblMenuGrupo'
> en
> la tabla 'tblMenuUsuario', podrían producirse ciclos o múltiples rutas
> en
> cascada. Especifique ON DELETE NO ACTION o UPDATE NO ACTION, o bien
> modifique
> otras restricciones FOREIGN KEY.
> No se pudo crear la restricción. Consulte los errores anteriores.
> [/CODE]
>
> ¿Alguien podria decirme como solventar este problema,?



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida