Ejercicios por dificultad

English version (when available)

Desordenados


Dificultad A


P09.001- Crea con tu usuario las tablas siguientes (puedes usar CREATE TABLE ... LIKE ...):

yXXX_paciente (mismas columnas y filas que la tabla Hospital.paciente),
yXXX historial (mismas columnas y filas que la tabla Hospital.historial),
yXXX_linea_historial (mismas columnas y filas que la tabla Hospital.linea_historial),
yXXX_tiene_un (mismas columnas y filas que la tabla Hospital.tiene_un),
yXXX_trabajador (mismas columnas y filas que la tabla Hospital.trabajador),
yXXX_enfermero (mismas columnas y filas que la tabla Hospital.enfermero)
yXXX_medico (mismas columnas y filas que la tabla Hospital.medico)
yXXX_especialidad (mismas columnas y filas que la tabla Hospital.especialidad)
yXXX_auxiliar_m (colegiado varchar(9), CP: colegiado)
yXXX_auxiliar_h (colegiado varchar(9), CP: colegiado)

P09.002- Haz un procedimiento que sirva para dar de alta una especialidad nueva

P09.003- Haz un procedimiento que sirva para borrar una especialidad dada

P09.004- Haz un procedimiento que sirva para borrar todas las especialidades

P09.005- Haz un procedimiento que ponga como no activo a un paciente dado, sólo si no es de la Comunidad Valenciana

P09.006- Haz un procedimiento en el que dado como entrada el sip de un paciente, compruebe la última vez en la que dicho paciente estuvo ingresado. Si corresponde a una fecha del año anterior o anteriores, ponga dicho paciente como no activo

P09.007- Haz un procedimiento en el que todos aquellos trabajadores que no sean ni médicos ni enfermeros sean añadidos a la tabla yXXX_auxiliar_m, o a la tabla yXXX_auxiliar_h en función de su sexo

P09.008- Revisa el siguiente código. ¿Encuentras algún error? En caso afirmativo justifica la respuesta.
CREATE FUNCTION total_activos()
RETURNS int
DETERMINISTIC
BEGIN
DECLARE total int;
SELECT count(*) INTO total
FROM yXXX_trabajador;
END;

P09.009- Explica qué hace la siguiente función:
CREATE FUNCTION total_asignados_profesores(IN eldni char(9))
RETURNS decimal(4,2)
BEGIN
DECLARE total decimal(4,2)=0;
SET total= SELECT SUM(creditos) FROM imparte_teoria WHERE dni=eldni +
SELECT SUM(creditos) FROM imparte_practica WHERE dni=eldni;
RETURN total;
END;

P09.010- Indica cuándo se ejecutará el código del siguiente disparador:
CREATE TRIGGER activa_medico AFTER insert ON MEDICO
FOR EACH ROW
UPDATE trabajador SET active=1 WHERE colegiado=NEW.colegiado;
END;

P09.011- Indica cuándo se ejecutará el código del siguiente disparador:
CREATE TRIGGER activa_medico BEFORE delete ON MEDICO
FOR EACH ROW
UPDATE trabajador SET active=0 WHERE colegiado=OLD.colegiado;
END;

P09.012- Crea un procedimiento en el que dado un médico, actualice el valor de su columna firmado a “S” o “N” según el médico haya firmado alguna línea de historial o no.

Con esta sentencia se añade la columna “firmado” de tipo de datos char(1) a la tabla medico: ALTER TABLE medico ADD firmado char(1);