� CREACIÓN DE FUNCIONES EN MySQL
Las funciones son como "mini programas" que hacen cálculos y te regresan un resultado. Por
ejemplo, calcular IVA, edad, promedio, etc.
🔢 Ejemplo 1: Función para calcular el VA de un precio
DELIMITER //
CREATE FUNCTION calcularIVA(precio DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
DECLARE iva DECIMAL(10,2);
SET iva = precio * 0.16;
RETURN iva;
END //
DELIMITER ;
📘 Explicación:
DELIMITER //: Cambiamos el final de línea para que MySQL sepa que el ; no es el fin
del bloque.
CREATE FUNCTION calcularIVA(precio DECIMAL(10,2)): Creamos una
función llamada calcularIVA que recibe un parámetro llamado precio.
RETURNS DECIMAL(10,2): La función va a devolver un número decimal (ejemplo:
12.50).
DETERMINISTIC: Indica que, con el mismo input, siempre da el mismo output.
DECLARE iva ...: Creamos una variable interna iva.
SET iva = precio * 0.16;: Calculamos el 16% del precio.
RETURN iva;: Devolvemos el resultado.
END //: Finaliza la función.
DELIMITER ;: Regresamos al delimitador normal.
🙋♀� ¿Cómo la uso?
SELECT calcularIVA(100); -- Resultado: 16.00
� Ejemplo 2: Función para calcular edad a partir de una fecha de nacimiento
DELIMITER //
CREATE FUNCTION calcularEdad(fechaNacimiento DATE)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE edad INT;
SET edad = TIMESTAMPDIFF(YEAR, fechaNacimiento, CURDATE());
RETURN edad;
END //
DELIMITER ;
📘 Explicación:
TIMESTAMPDIFF(YEAR, fechaNacimiento, CURDATE()): Calcula cuántos
años han pasado desde la fecha de nacimiento hasta hoy.
🙋♀� ¿Cómo la uso?
SELECT calcularEdad('2005-06-01'); -- Resultado: 19 (si estás en
2025)
🔥 DISPARADORES (TRIGGERS)
Los disparadores ejecutan automáticamente instrucciones cuando ocurre un evento (INSERT,
UPDATE o DELETE) en una tabla.
📋 Ejemplo 1: Crear un disparador que guarda en una bitácora cuando se registra un niño
DELIMITER //
CREATE TRIGGER insertarBitacoraNino
AFTER INSERT ON nino
FOR EACH ROW
BEGIN
DECLARE nc VARCHAR(50);
DECLARE edad INT;
SET nc = NOMCOM([Link]); -- Llama una función para obtener
el nombre completo
SET edad = calcularEdad([Link]); -- Calcula edad
usando una función
INSERT INTO bitacoraNino
VALUES (NULL, nc, edad, SESSION_USER(), NOW());
END //
DELIMITER ;
📘 Explicación paso a paso:
CREATE TRIGGER insertarBitacoraNino: Nombre del trigger.
AFTER INSERT ON nino: Se ejecuta después de insertar un nuevo niño en la tabla
nino.
FOR EACH ROW: Se aplica por cada fila insertada.
BEGIN ... END: Bloque de código del trigger.
DECLARE: Declaramos variables para guardar datos temporalmente.
[Link] y [Link]: Se refiere a los valores del nuevo registro
insertado.
NOMCOM(...) y calcularEdad(...): Son funciones creadas por ti que se usan
dentro del trigger.
SESSION_USER(): Devuelve el usuario que ejecutó la acción.
NOW(): Fecha y hora actual.
INSERT INTO bitacoraNino ...: Guarda los datos en una bitácora.
💡 Variaciones de eventos en triggers:
Evento Cuándo se activa
BEFORE INSERT Antes de insertar un registro
AFTER INSERT Después de insertar
BEFORE UPDATE Antes de modificar
AFTER UPDATE Después de modificar
BEFORE DELETE Antes de borrar
AFTER DELETE Después de borrar
🛠� Mostrar, borrar y ver triggers
Mostrar todos los triggers:
SHOW TRIGGERS;
Mostrar trigger específico:
SHOW CREATE TRIGGER insertarBitacoraNino;
Borrar un trigger:
DROP TRIGGER IF EXISTS insertarBitacoraNino;