-Actividad 2-
MANEJO DE FECHAS EN MYSQL
Guia manejo de fechas
Subconsultas:
Descargar el siguiente archivo para recordar el manejo de las subconsultas:
Consulta
Que son trigguer?
Un trigger (o desencadenador) en MySQL es un tipo de procedimiento almacenado que se ejecuta automáticamente cuando ocurre un evento específico en una tabla, como insertar, actualizar o eliminar registros. Los triggers se utilizan para realizar acciones automáticas, como validar datos, mantener la integridad referencial, auditar cambios, o realizar acciones en cascada, entre otros.
Cual es la sintaxis general para crear un trigger ?
La sintaxis general para crear un trigger en MySQL es la siguiente:
CREATE TRIGGER nombre_trigger
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON nombre_tabla
FOR EACH ROW
BEGIN
-- Cuerpo del trigger (acciones a realizar)
END;
delimiter //
create trigger nombre after (insert, delete, update) on tabla for each row //recorre fila por fila (arreglos o matrices)
begin
sentencia sql;
end
//
delimiter ;//Separar el punto y como del delimiter
Donde:
- `nombre_trigger` es el nombre que se le da al trigger.
- `BEFORE` o `AFTER` especifica cuándo se debe ejecutar el trigger, antes o después del evento.
- `INSERT`, `UPDATE` o `DELETE` especifica el evento que activa el trigger.
- `nombre_tabla` es la tabla en la que se define el trigger.
- `FOR EACH ROW` indica que el trigger se ejecutará una vez por cada fila afectada por el evento.
- El bloque `BEGIN...END` contiene las acciones que se deben realizar cuando se activa el trigger.
Aquí tienes un ejemplo sencillo de cómo crear un trigger en MySQL:
CREATE TRIGGER before_insert_cliente
BEFORE INSERT ON clientes
FOR EACH ROW
BEGIN
SET NEW.fecha_registro = NOW();
END;
Este trigger se activa antes de insertar un nuevo registro en la tabla `clientes` y establece la columna `fecha_registro` con la fecha y hora actual.
¿Para qué sirve?
La principal función de los trigger es contribuir a mejorar la gestión de la base de datos. Gracias a ellos muchas operaciones se pueden realizar de forma automática, sin necesidad de intervención humana, lo que permite ahorrar mucho tiempo.
Otra de sus funciones es aumentar la seguridad e integridad de la información. Esto lo consiguen gracias a la programación de restricciones o requerimientos de verificación que permiten minimizar los errores y sincronizar la información.
Por otra parte, entre sus principales ventajas es que todas estas funciones se pueden realizar desde la propia base de datos, es decir, no es necesario recurrir a lenguajes externos de programación.
Ventajas de los Triggers
- Generar automáticamente algunos valores de columna derivados.
- Aplicar la integridad referencial.
- Registro de eventos y almacenamiento de información sobre el acceso a la tabla.
- Auditoría.
- Replicación sincrónica de tablas.
- Imponer autorizaciones de seguridad.
- Prevenir transacciones inválidas.
Comandos comunes
Para eliminar un trigger, puedes usar el comando: DROP TRIGGER nombre_del_trigger;
Para ver todos los triggers, puedes usar el comando: SHOW TRIGGERS;
Referencias
Latam, A. (2023, 15 noviembre). Qué es y cómo usar un trigger en SQL. Alura. https://www.aluracursos.com/blog/que-es-y-como-trigger-en-sql
Tablado, F. (2020, 22 octubre). ¿Qué es un trigger en una base de datos? Ayuda Ley Protección Datos. https://ayudaleyprotecciondatos.es/bases-de-datos/trigger/
Documentación Triggers
Inicializamos la base de datos de Subconsultas que contiene las tablas articulo y detalle.

Creamos un trigger con el nombre de valorventa que al insertar un articulo realice el siguiente cálculo. Calcular el valorventa de la tabla detalle con un incremento del 23% del valorunitario de la tabla articulo
1.Que se desea consultar o modificar y de que tabla
Detalle.valorventa
2.Tablas involucradas
Articulo
Detalle
3.Condicion
articulo.codigo = detalle.codigo
4.comandos
Update
where
select
After
5.Sintaxis de la sentencia sql
update detalle set valorventa = (select valorunitario + (valorunitario * 0.23) from articulo where articulo.codigo = detalle.codigo);
6.Trigger

Se observa el trigger con el comando SHOW TRIGGERS;

Agregamos un articulo para ver si el trigger funciona correctamente

After
Creamos otro trigger con el nombre de actualizar_existenciap que al insertar un detalle realice el sigueinte cálculo calcular las existencias segun la tabla detalle de cada articulo
1.Que se desea consultar o modificar y de que tabla
Articulo.existencia
2.Tablas involucradas
Articulo
Detalle
3.Condicion
detalle.codigo = articulo.codigo
4.comandos
Update
where
select
After
5.Sintaxis de la sentencia sql
updatearticulo set existencia = cantidad - (select sum(cantidad) from detalle where detalle.codigo = articulo.codigo);
6.Trigger

Agregamos otro articulo y observamos los cambios en las tablas

Before
Se crea una nueva base de datos llamada PruebadeTrigger.
Creamos una tabla llamada productos

Insertamos algunos productos
Crear un trigger que antes de insertar un producto calcule el valor de venta
1.Que se desea consultar o modificar y de que tabla
Productos..valorventa
2.Tablas involucradas
Productos
3.Condicion
Ninguna
4.comandos
Before
Set
5.Sintaxis de la sentencia sql
set new.valorventa =new.costo+new.costo*new.porgana/100;
6.Trigger

Comprobamos que le trigger funcione correctamente agregando de nuevo el producto anterior

crear un trigger que antes de actualizar un producto vuelva y calcule el valor de venta.


Guardamos las bases de datos con los triggers

Archivo TXT con los comandos utilizados
Parte 2 De Triggers
Como crear un trigger con varias instrucciones
Creamos una tabla para guardar los artículos insertados

Creamos Un Trigger para calcular el Valor de la venta cuando se inserta un articulo nuevo.
current_user() => Comando para ver el usuario que esta logueado
Creamos el triggert con la siguiente estructura


Probamos el Trigger insertando un nuevo articulo

Creamos un Trigger para guardar seguimiento de Articulos actualizados y quien los actualizó. Guardar los datos anteriores y los datos nuevos, quien los actualizó, la fecha y la hora.
Creamos una tabla para guardar la información anteriormente solicitada


Creamos el trigger con la siguiente estructura

Vemos si quedo el trigger

Vamos a probar el trigger actualizando un articulo

Observamos los datos modificados

Crear un trigger para guardar seguimiento de articulos eliminados y quien los eliminó
Creamos una nueva tabla para que guarde los articulos eliminados
-Guardar los datos Anteriores
-Guardar qien los eliminó, fecha y hora.


Creamos el trigger con la siguiente estructura

Probamos el trigger de eliminar y guardar el articulo eliminado

FUNCIONES DE CONTROL DE FLUJO (IF): Establece una condición de acuerdo a varios argumentos de mando
1.Consultar los Artículos que tienen precio mayor a 100000 y menor igual a 950000, y sacar un mensaje que diga económico, de lo contrario debe salir un mensaje que diga costoso.
Utilizamos el siguiente comando ;
2.Consultar los Artículos que tienen un precio menor o igual a 950000, y sacar un mensaje que diga Porcentaje de Aumento el 25%, de lo contrario debe salir un mensaje que diga Porcentaje de aumento del 40%, con el Alias de Incremento.
Implementamos el siguiente codigo

FUNCIONES DE CONTROL DE FLUJO (Case)
