0% encontró este documento útil (0 votos)
45 vistas6 páginas

Ejemplos de Triggers en MySQL

Este documento describe la estructura y uso de triggers en MySQL. Explica que un trigger es una acción que se ejecuta automáticamente cuando ocurre un evento como insertar, actualizar o eliminar datos en una tabla. Proporciona dos ejemplos de cómo crear triggers para actualizar otras tablas después de modificar datos, como guardar el puntaje final de un equipo cuando se actualizan sus puntos o registrar un historial de cambios en una tabla persona.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
45 vistas6 páginas

Ejemplos de Triggers en MySQL

Este documento describe la estructura y uso de triggers en MySQL. Explica que un trigger es una acción que se ejecuta automáticamente cuando ocurre un evento como insertar, actualizar o eliminar datos en una tabla. Proporciona dos ejemplos de cómo crear triggers para actualizar otras tablas después de modificar datos, como guardar el puntaje final de un equipo cuando se actualizan sus puntos o registrar un historial de cambios en una tabla persona.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

INF-272 TALLER DE BASE DE DATOS MySQL

____________________________________________________________________________

TRIGGERS en MySQL

Estructura de un trigger

CREATE
[DEFINER = usuario]
TRIGGER [IF NOT EXISTS] nombre_trigger
{ BEFORE | AFTER } { INSERT | UPDATE | DELETE }
ON nombre_tabla FOR EACH ROW
[{ FOLLOWS | PRECEDES } otro_trigger]
BEGIN
declaraciones(cuerpo del trigger)
END

EJEMPLO 1

Crear un disparador que guarde el puntaje Final de cada equipo por


cualquier actualización en los puntos que gana por competencia
almacenados en la tabla realiza.
INF-272 TALLER DE BASE DE DATOS MySQL
____________________________________________________________________________

SOLUCIÓN

Puntaje Final = Suma (Puntos)

DELIMITER //
CREATE TRIGGER t_realiza_upd_puntos AFTER UPDATE ON realiza
FOR EACH ROW
BEGIN
DECLARE pf double;
SELECT SUM(puntos)into pf
FROM realiza
WHERE codEquipo = [Link];

UPDATE equipo
SET puntajeFinal = pf
WHERE codEquipo = [Link];
END//
DELIMITER ;
INF-272 TALLER DE BASE DE DATOS MySQL
____________________________________________________________________________
TABLAS PREVIAS A LA EJECUCIÓN

Tabla realiza

Tabla equipo

EJECUCIÓN (ACTUALIZACIÓN DE UN REGISTRO)

UPDATE realiza
SET puntos = 90
WHERE codEquipo = 1001
AND codCompetencia = 2;

TABLAS POSTERIORES A LA EJECUCIÓN

Tabla realiza

Tabla equipo
INF-272 TALLER DE BASE DE DATOS MySQL
____________________________________________________________________________
EJEMPLO 2

Crear una tabla que guarde el historial de las actualizaciones hechas en


la tabla persona, cada registro de la nueva tabla debe contener los
mismos campos de la tabla persona con la adición de una nueva columna
la cual guardará la fecha de la modificación.

SOLUCIÓN

Creación de la tabla histo_persona.

CREATE TABLE IF NOT EXISTS `bdcampamento`.`histo_persona` (


`ci` INT NOT NULL,
`exp` VARCHAR(10) NOT NULL,
`apellidoPaterno` VARCHAR(50) NOT NULL,
`apellidoMaterno` VARCHAR(50) NOT NULL,
`nombre` VARCHAR(50) NOT NULL,
`fechaNacimiento` DATE NOT NULL,
`sexo` VARCHAR(10) NOT NULL,
`fechamodi` DATE NOT NULL
)
ENGINE = InnoDB;

Creación del trigger t_histo_persona.

DELIMITER //
CREATE TRIGGER `t_histo_persona` AFTER UPDATE ON `persona`
FOR EACH ROW BEGIN
INSERT INTO histo_persona
VALUES (
[Link],
[Link],
[Link],
INF-272 TALLER DE BASE DE DATOS MySQL
____________________________________________________________________________

[Link],
[Link],
[Link],
[Link],
CURDATE()
);
END//
DELIMITER ;

TABLAS PREVIAS A LA EJECUCIÓN

Tabla persona

Tabla histo_persona (está vacía)

EJECUCIÓN (ACTUALIZACIÓN DE UN REGISTRO)

UPDATE persona
SET apellidoPaterno = 'FatherLastName'
WHERE ci = 2005061;
INF-272 TALLER DE BASE DE DATOS MySQL
____________________________________________________________________________
TABLAS POSTERIORES A LA EJECUCIÓN

Tabla persona

Tabla histo_persona

También podría gustarte