Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Crea una base de datos llamada test que contenga una tabla llamada alumnos
con las siguientes columnas.
Tabla alumnos:
• id (entero sin signo)
• nombre (cadena de caracteres)
• apellido1 (cadena de caracteres)
• apellido2 (cadena de caracteres)
• email (cadena de caracteres):
pág. 1
1.- Escriba un procedimiento llamado crear_email que dados los
parámetros de entrada: nombre, apellido1, apellido2 y dominio, cree una
dirección de email y la devuelva como salida.
• Procedimiento: crear_email
• Entrada:
o nombre (cadena de caracteres)
o apellido1 (cadena de caracteres)
o apellido2 (cadena de caracteres)
o dominio (cadena de caracteres)
• Salida:
o email (cadena de caracteres)
R: DROP PROCEDURE IF EXISTS crear_email$$;
email=
CONCAT(SUBSTR(nombre,1,1),SUBSTR(apellido1,1,3),SUBSTR(apellido2,1,3),
'@', dominio);
SET email = LOWER(email);
END
2.- Una vez creada la tabla escriba un trigger con las siguientes
características:
• Trigger: trigger_crear_email_before_insert
o Se ejecuta sobre la tabla alumnos.
o Se ejecuta antes de una operación de inserción.
o Si el nuevo valor del email que se quiere insertar es NULL,
entonces se le creará automáticamente una dirección de email
y se insertará en la tabla.
o Si el nuevo valor del email no es NULL se guardará en la tabla
el valor del email.
R: DELIMITER $$
pág. 2
BEFORE INSERT
ON alumnos FOR EACH ROW
BEGIN
CALL crear_email(NEW.nombre,
NEW.apellido1,
NEW.apellido2,
dominio,
@email);
SET NEW.email = @email;
END IF;
END
pág. 3
old_email VARCHAR(128),
new_email VARCHAR(128),
FOREIGN KEY (id_alumno) REFERENCES alumnos(id)
);
DELIMITER $$
AFTER UPDATE
ON alumnos FOR EACH ROW
BEGIN
IF OLD.email <> NEW.email THEN
END
Trigger: trigger_guardar_alumnos_eliminados:
pág. 4
R: CREATE TABLE log_alumnos_eliminados (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
apellido2 VARCHAR(50),
email VARCHAR(128)
);
DELIMITER $$
AFTER DELETE
ON alumnos FOR EACH ROW
BEGIN
INSERT INTO log_alumnos_eliminados
);
END
pág. 5