Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

¿como se borraba en cascada para evitar campo nulos en algunas tablas ?

Estas en el tema de ¿como se borraba en cascada para evitar campo nulos en algunas tablas ? en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/06/2004, 09:30
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
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.
  #2 (permalink)  
Antiguo 12/06/2004, 09:59
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Cuando creas tus llaves foraneas tienes que indicarle las reglas de Integridad, especificamente la que tu quieres es : ON DELETE CASCADE.

Saludos
  #3 (permalink)  
Antiguo 13/06/2004, 04:32
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
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.
  #4 (permalink)  
Antiguo 14/06/2004, 16:39
 
Fecha de Ingreso: mayo-2004
Mensajes: 74
Antigüedad: 20 años
Puntos: 0
Perdon la pregunta Pero que manejador de BD estas usando??
  #5 (permalink)  
Antiguo 15/06/2004, 03:11
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
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
  #6 (permalink)  
Antiguo 15/06/2004, 08:03
 
Fecha de Ingreso: mayo-2004
Mensajes: 74
Antigüedad: 20 años
Puntos: 0
OK. Nos serguiremos viendo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:13.