82 - Borrar registros en cascada (delete - join) |
Una clínica registra los pacientes en una tabla llamada "pacientes" y en otra tabla denominada "obrassociales" almacena los datos de las obras sociales que atiende. 1- Elimine las tablas si existen. 2- Cree las tablas: create table pacientes( documento char(8), nombre varchar(30), domicilio varchar(30), codigoobrasocial tinyint unsigned ); create table obrassociales( codigo tinyint unsigned auto_increment, nombre varchar(15), domicilio varchar(30), primary key(codigo) ); 3- Ingrese algunos registros: insert into obrassociales values (1,'PAMI','Colon 345'); insert into obrassociales values (2,'IPAM','Sucre 98'); insert into obrassociales values (3,'OSDOP','Avellaneda 267'); insert into pacientes values('22333444','Juan Lopez','Guemes 235',1); insert into pacientes values('23444555','Analia Juarez','Avellaneda 367',1); insert into pacientes values('24555666','Juan Lopez','Guemes 235',2); insert into pacientes values('25666777','Jose Ferrero','Urquiza 312',3); insert into pacientes values('26777888','Hhector Garcia','Caseros 411',3); insert into pacientes values('27888999','Susana Duarte','Peru 211',3); 4- La clínica ya no atiende a pacientes de la obra social "PAMI". Se quiere eliminar de la tabla "obrassociales" a dicha obra social y de la tabla "pacientes" a todos los pacientes que de "PAMI": delete pacientes,obrassociales from pacientes as p join obrassociales as os on p.codigoobrasocial=os.codigo where os.nombre='PAMI'; 5- Verifique las eliminaciones.
Un club de dicta clases de distintos deportes a sus socios. Guarda la información de los deportes que dicta en una tabla llamada "deportes", los datos de los profesores en "profesores" y las inscipciones en "inscriptos". 1- Elimine las tablas, si existen. 2- Cree las tablas: create table deportes( codigo tinyint unsigned auto_increment, nombre varchar(20) not null, profesor tinyint unsigned, primary key(codigo) ); create table profesores( codigo tinyint unsigned auto_increment, nombre varchar(30), domicilio varchar(30), primary key(codigo) ); create table inscriptos( numerosocio int unsigned, deporte tinyint unsigned, año year not null, ); 3- Ingrese los siguientes registros: insert into profesores values(1,'Alfredo Perez','Sarmiento 984'); insert into profesores values(2,'Betina Molina','Sucre 356'); insert into profesores values(3,'Carlos Garcia','Urquiza 209'); insert into profesores values(4,'Daniel Morales','Salta 1234'); insert into deportes values(1,'tenis',1); insert into deportes values(2,'natacion',2); insert into deportes values(3,'basquet',3); insert into deportes values(4,'futbol',1); insert into inscriptos values(102,1,'2006'); insert into inscriptos values(102,2,'2006'); insert into inscriptos values(104,2,'2006'); insert into inscriptos values(104,3,'2006'); insert into inscriptos values(106,1,'2006'); insert into inscriptos values(109,2,'2006'); 4- El club ha cancelado el deporte "tenis"; se quiere eliminar dicho deporte de la tabla "deportes" y las inscripciones a "tenis" de "inscriptos": delete deportes,inscriptos from deportes as d join inscriptos as i on d.codigo=i.deporte where d.nombre='tenis'; 5- Verifique las eliminaciones. 6- El profesor "Carlos García" renunció al club. Se quiere borrar a dicho profesor de la tabla "profesores" y eliminar todos los deportes que dictaba "Carlos García", además, de todas las inscripciones a todos los deportes que dictaba dicho profesor: delete inscriptos,profesores,deportes from inscriptos as i join deportes as d on d.codigo=i.deporte join profesores as p on d.profesor=p.codigo where p.nombre='Carlos Garcia'; 7- Verifique las eliminaciones en todas las tablas involucradas.