Creación de Funciones, Procedimientos y Triggers en MySQL

En este artículo, abordaremos la creación de varias funciones, procedimientos y triggers en una base de datos MySQL, diseñados para gestionar y actualizar datos relacionados con una comisaría, cárceles, delincuentes y crímenes.

1. Función que devuelve la cantidad de delincuentes en una cárcel

Esta función recibe el ID de una cárcel y devuelve la cantidad de delincuentes que hay en ella.

CREATE FUNCTION CantidadDelincuentesEnCarcel(id_carcel INT) RETURNS INT
BEGIN
    DECLARE cantidad_delincuentes INT;
    SELECT COUNT(*) INTO cantidad_delincuentes
    FROM delincuentes
    WHERE id_carcel = id_carcel;
    RETURN cantidad_delincuentes;
END;

2. Función que devuelve la edad de un delincuente introduciendo su nombre

Esta función recibe el nombre de un delincuente y devuelve su edad.

CREATE FUNCTION EdadDelincuentePorNombre(nombre_delincuente VARCHAR(50)) RETURNS INT
BEGIN
    DECLARE edad_delincuente INT;
    SELECT edad INTO edad_delincuente
    FROM delincuentes
    WHERE nombre = nombre_delincuente;
    RETURN edad_delincuente;
END;

3. Procedimiento para actualizar la gravedad de un crimen

Este procedimiento actualiza la gravedad de un crimen a «ALTA» si el número de muertos es superior a 2.

CREATE PROCEDURE ActualizarGravedadCrimen()
BEGIN
    UPDATE crimenes
    SET gravedad = 'ALTA'
    WHERE num_muertos > 2;
END;

4. Procedimiento para dar de alta un delincuente

Este procedimiento inserta un nuevo delincuente en la base de datos. Si el delincuente ya existe, se muestra un mensaje indicando que ya existe.

CREATE PROCEDURE AltaDelincuente(
    IN p_nombre VARCHAR(50),
    IN p_apellido VARCHAR(50),
    IN p_edad INT,
    IN p_genero VARCHAR(10),
    IN p_correo VARCHAR(50),
    IN p_id_carcel INT
)
BEGIN
    DECLARE cantidad_delincuentes INT;
    SELECT COUNT(*) INTO cantidad_delincuentes
    FROM delincuentes
    WHERE nombre = p_nombre AND apellido = p_apellido;

    IF cantidad_delincuentes > 0 THEN
        SELECT 'El delincuente ya existe' AS mensaje;
    ELSE
        INSERT INTO delincuentes (nombre, apellido, edad, genero, correo, id_carcel)
        VALUES (p_nombre, p_apellido, p_edad, p_genero, p_correo, p_id_carcel);
    END IF;
END;

5. Trigger para actualizar la cantidad de delincuentes en una cárcel

Este trigger se activa después de insertar un nuevo delincuente y actualiza la cantidad de delincuentes en la cárcel correspondiente.

CREATE TRIGGER ActualizarCantidadDelincuentesDespuesDeInsertar
AFTER INSERT ON delincuentes
FOR EACH ROW
BEGIN
    UPDATE carceles
    SET cantidad_delincuentes = cantidad_delincuentes + 1
    WHERE id = NEW.id_carcel;
END;

6. Trigger para actualizar la cantidad de inspectores

Este trigger se activa después de eliminar un inspector y actualiza la cantidad de inspectores en la base de datos.

CREATE TRIGGER ActualizarCantidadInspectoresDespuesDeEliminar
AFTER DELETE ON inspectores
FOR EACH ROW
BEGIN
    UPDATE crimenes
    SET cantidad_inspectores = cantidad_inspectores - 1
    WHERE id_inspector = OLD.id;
END;

7. Función para actualizar y devolver el total de munición en un arsenal

Esta función recibe el ID de un arsenal, actualiza la cantidad de munición de todas las armas en ese arsenal y devuelve el total de la munición.

CREATE FUNCTION ActualizarYDevolverMunicionTotal(id_arsenal INT) RETURNS INT
BEGIN
    DECLARE municion_total INT;
    UPDATE armas
    SET municion = municion + 1
    WHERE id_arsenal = id_arsenal;

    SELECT SUM(municion) INTO municion_total
    FROM armas
    WHERE id_arsenal = id_arsenal;

    RETURN municion_total;
END;

8. Procedimiento para mostrar delincuentes involucrados en crímenes graves

Este procedimiento muestra los nombres y apellidos de los delincuentes involucrados en crímenes cuya gravedad sea alta, concatenados en una sola columna.

CREATE PROCEDURE DelincuentesEnCrimenesGraves()
BEGIN
    SELECT CONCAT(nombre, ' ', apellido) AS nombre_completo
    FROM delincuentes
    WHERE id_crimen IN (
        SELECT id
        FROM crimenes
        WHERE gravedad = 'ALTA'
    );
END;

Estos ejemplos muestran cómo usar funciones, procedimientos y triggers en MySQL para gestionar y actualizar datos de una base de datos. Cada uno de estos elementos desempeña un papel crucial en la automatización y mantenimiento de la integridad de los datos.

gray and black laptop computer
Photo by Pixabay on Pexels.com
error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.