Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 12-jun-2004, 09:30   #1 (permalink)
aeb_asturias está en el buen camino
 
Fecha de Ingreso: marzo-2004
Mensajes: 495
Sonrisa ¿como se borraba en cascada para evitar campo nulos en algunas tablas ?

Hola a todos. Mi duda es la siguiente:

Tengo una base de datos hecha con sql y tengo varias tablas que entre otros campos tienen las claves primarias de otras tablas de mi base de datos. Me encuentro en el problema de que si borro un registro de una tabla, todas las demas tablas que hacían referencia a ese registro borrado debido a que en unos de sus campos albergaba la clave primaria borrada en la otra tabla pues me aparecen vacios.

Yo quiero que si borro un registro de una tabla, entonces se borren automaticamente los demas registros de las otras tablas que contenian la clave primaria de ese registro borrado.

Me parece que es borrando en cascada pero no me acuerdo bien como se hacia, asi que espero que alguien me ayude.

Un saludo.
aeb_asturias está desconectado   Responder Citando
Antiguo 12-jun-2004, 09:59   #2 (permalink)
DotNetDeveloper está en el buen camino
 
Fecha de Ingreso: abril-2003
Mensajes: 607
Cuando creas tus llaves foraneas tienes que indicarle las reglas de Integridad, especificamente la que tu quieres es : ON DELETE CASCADE.

Saludos
DotNetDeveloper está desconectado   Responder Citando
Antiguo 13-jun-2004, 04:32   #3 (permalink)
aeb_asturias está en el buen camino
 
Fecha de Ingreso: marzo-2004
Mensajes: 495
Hola, soy yo otra vez. Gracias por contestar DotNetDeveloper, he echo lo siguiente con mis dos tablas siguientes pero no consigo que cuando borro un registro de una tabla se me borre todos los registros de la otra tabla donde habia puesto on delete cascade. Creé dos tablas muy sencillas para ver si funcionaba esto de on delete cascade:

create table usuarios(
IdUsuario int not null primary key,
nombre varchar(20) not null
);

create table pedidos(
IdPedido int not null primary key,
IdUsuario int not null,
foreign key(IdUsuario)references usuarios(IdUsuario) on update cascade on delete cascade
);

Como puedes ver IdUsuario esta en la tabla pedidos y he puesto lo de on delete cascade para que cuando borre un registro de la tabla usuarios, se me borre los registros de la tabla pedidos que contengan dicho usuario pero NO SE ME BORRAN TALES REGISTROS.

¿que estoy haciendo mal?

Saludos.
aeb_asturias está desconectado   Responder Citando
Antiguo 14-jun-2004, 16:39   #4 (permalink)
jean1124 está en el buen camino
 
Fecha de Ingreso: mayo-2004
Mensajes: 74
Perdon la pregunta Pero que manejador de BD estas usando??
jean1124 está desconectado   Responder Citando
Antiguo 15-jun-2004, 03:11   #5 (permalink)
aeb_asturias está en el buen camino
 
Fecha de Ingreso: marzo-2004
Mensajes: 495
Gracias jean1124 por responder. Ya arregle el problema. La cosa estaba en que estaba utilizando una version de mysql vieja que no soportaba integridad referencial por lo que no me funcionaba lo de on delete cascade. Actualiza a mysql 4.0.18 y utilizando tablas del tipo innodb ya me funciona lo de on delete cascade.

De todos modos, muchas gracias por la gente que se ha interesado y ayudado.

Un saludo
aeb_asturias está desconectado   Responder Citando
Antiguo 15-jun-2004, 08:03   #6 (permalink)
jean1124 está en el buen camino
 
Fecha de Ingreso: mayo-2004
Mensajes: 74
OK. Nos serguiremos viendo
jean1124 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 21:11.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93