![]() |
¿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. |
Cuando creas tus llaves foraneas tienes que indicarle las reglas de Integridad, especificamente la que tu quieres es : ON DELETE CASCADE. Saludos |
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. |
Perdon la pregunta Pero que manejador de BD estas usando?? |
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 |
OK. Nos serguiremos viendo :aplauso: :adios: |
| La zona horaria es GMT -6. Ahora son las 09:20. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.