Você está na página 1de 13

Por Gustavo Walteros Laarrotta- 2018

Buen día les comparto este material que recientemente he podido comprobar que funciona
en MySQL 5.7.11 y trabaja enlazado con el Workbench 6.3 ce.

Este último tiene la ventaja que podemos visualizar varias linead de código y ejecutarlo
selectivamente, además de ayudar a corregir las líneas de código cuando tiene errores.

Aunque este programa tiene asistentas para agregar procedimientos almacenados, funciones y
triggers en este ejercicio pude comprobar se dejan crear ejecutando las lineas de código,
también en el caso de los triggers algunos los ejecute desde la línea de código y fueron creados
correctamente.

Aunque hubo una excepción por lo cual al final de este documento les explico cómo insertarlo
paso a paso.

Este código me sirvió para ver cómo funcionan los triggers aunque la sintaxis difiere y tiene
algunas líneas de código diferentes que con su ayuda descifraremos para le conocimiento de
todos.

Para quienes no
tiene mucha
experiencia con
el workbench
les cuento
puedes ver
insertar todo
este código y
ejecutarlo por
partes así:
Seleccionamos una línea y damos clic para ejecutar solo esa línea de código.

O si se quiere ejecutar todo el código

Este código fue tomado de internet llamado “triggers - disparadores guía sencilla”

--ESTRUCTURA DE UN TRIGGER

DELIMITER @

CREATE trigger nombre_trigger [before, after] [insert, update, delete] ON tabla

For Each Row

Begin

Sentencia a Ejecutar [insert, update, delete]

End;

DELIMITER ;

--CREAR LA BASE DE DATOS

CREATE database IF NOT EXISTS bdTrigger;

--ENTRAR EN LA BASE DE DATOS

USE bdTrigger;

--CREAR TABLA CLIENTE

CREATE TABLE IF NOT EXISTS tb_cliente

id_orden INT NOT NULL auto_increment,

documento VARCHAR(12),

nombre VARCHAR(25) NOT NULL,


apellido VARCHAR(35)NOT NULL,

telefono VARCHAR(15),

email VARCHAR(50),

PRIMARY KEY(id_orden,documento)

)engine=InnoDB;

--CREAR TABLA tb_seguridad_cliente

/* En esta tabla guardaremos el respaldo de los datos luego de ejecutar una instrucción en la
tabla tb_cliente mediante el Disparador*/

CREATE TABLE IF NOT EXISTS tb_seguridad_cliente

documento_c VARCHAR(12),

nombre_c VARCHAR(25),

apellido_c VARCHAR(35),

telefono_c VARCHAR(15),

email_c VARCHAR(50),

fecha_accion_c DATE,

accion_c VARCHAR(11) /* Agregado, Modificado, Cancelado-0-(Eliminado)*/

)engine=InnoDB;

--LISTO SE HAN CREADO LAS TABLAS

--AHORA CREAREMOS LOS TRIGGERS

--Trigger que se acciona luego de INSERTAR algún registro en la Tabla tb_cliente

DELIMITER @

CREATE TRIGGER tr_insert_cliente BEFORE INSERT ON tb_cliente

FOR EACH ROW

BEGIN

INSERT INTO tb_seguridad_cliente VALUES ( new.documento, new.nombre, new.apellido,


new.telefono, new.email, curdate(),'Agregado');

END;
@

DELIMITER ;

--Trigger que se acciona luego de ACTUALIZAR algún registro en la Tabla tb_cliente

DELIMITER @

CREATE TRIGGER tr_update_cliente BEFORE UPDATE ON tb_cliente

FOR EACH ROW

BEGIN

INSERT INTO tb_seguridad_cliente VALUES (new.documento, new.nombre, new.apellido,


new.telefono, new.email, curdate(), 'Modificado');

END;

DELIMITER ;

--Trigger que se acciona luego de ELIMINAR algún registro en la Tabla tb_cliente

DROP TRIGGER tr_delete_cliente;

DELIMITER @

CREATE TRIGGER tr_delete_cliente AFTER DELETE ON tb_cliente

FOR EACH ROW

BEGIN

INSERT INTO tb_seguridad_cliente VALUES(old.documento, old.nombre, old.apellido,


old.telefono, old.email, curdate(),'Eliminado');

END;

DELIMITER ;

USE `bdtrigger`;

DELIMITER $$

DROP TRIGGER IF EXISTS bdtrigger.tb_cliente_AFTER_DELETE$$


USE `bdtrigger`$$

CREATE DEFINER = CURRENT_USER TRIGGER `bdtrigger`.`tb_cliente_AFTER_DELETE` AFTER


DELETE ON `tb_cliente` FOR EACH ROW

BEGIN

INSERT INTO tb_seguridad_cliente VALUES(old.documento, old.nombre, old.apellido,


old.telefono, old.email, curdate(),'Eliminado');

END$$

DELIMITER ;

/* Insertamos clientes para verificar que el Disparador

-- tr_insert_cliente -- Funcione correctamente */

INSERT INTO tb_cliente(documento,nombre,apellido,telefono,email)

VALUES ('1065 -1','jair cliente 1','apellido cliente 1','tel c1','email@cliente1'),

('1065 -2','marcela cliente 2','apellido cliente 2','tel c2','email@cliente2'),

('1065 -3','damaris cliente 3','apellido cliente 3','tel c3','email@cliente3'),

('1065 -4','emeterio cliente 4','apellido cliente 4','tel c4','email@cliente4'),

('1065 -5','diana cliente 5','apellido cliente 5','tel c5','email@cliente5'),

('1065 -6','ruber cliente 6','apellido cliente 6','tel c6','email@cliente6'),

('1065 -7','yuleidi cliente 7','apellido cliente 7','tel c7','email@cliente7'),

('1065 -8','vianeth cliente 8','apellido cliente 8','tel c8','email@cliente8'),

('1065 -9','lucia cliente 9','apellido cliente 9','tel c9','email@cliente9'),

('1065 -10','ismael cliente 10','apellido cliente 10','tel c10','email@cliente10'),

('1065 -11','justa cliente 11','apellido cliente 11','tel c11','email@cliente11'),

('1065 -12','sergio cliente 12','apellido cliente 12','tel c12','email@cliente12' );

/* Modificamos clientes para verificar que el Dispardor

-- tr_update_cliente -- Funcione correctamente */


UPDATE tb_cliente SET documento='i065 -mod', nombre='nombre j22 mod', apellido='apellido
mod', telefono='tel mod' WHERE id_orden = 7;

/* Eliminamos clientes para verificar que el Dispardor

-- tr_delete_cliente -- Funcione correctamente */

DELETE FROM tb_cliente WHERE id_orden = 9;

--Segunda prueba para de eliminar un registro, la primera elimino el registro 9 de la lista


cliente pero no fue registrado en la

tabla tb_seguridad_cliente

use dbtrigger;

DELETE FROM tb_cliente WHERE id_orden = 8;

-- COMPROBACION DE LOS TRIGGERS

/* Ahora si consultamos la tabla de tb_seguridad_cliente podremos observar que


automáticamente se han guardado los datos, sin necesidad de hacerlo mediante código otra
vez */

SELECT DISTINCT(documento_c), nombre_c, apellido_c, accion_c FROM tb_seguridad_cliente;

/* Para MOSTRAR los Disparadores - triggers empleamos el comando: Show triggers; */

Show triggers;

/* Para BORRAR los Disparadores - triggers empleamos el comando: Drop trigger


nombre_trigger; */

DROP TRIGGER tr_cliente;


La los trigger funeron insertados mediante el código, excepto el trigger de eliminar, para el
cual tuve que iniciar el asistente de workbench asi:

En la parte izquierda de la venta podemos ver la base de datos bdtrigger, al seleccionar la tabla
tb_cliente se pueden ver tres imaneges par iniciar
el asistente damos clin sobre la llave.
Aparece la siguiente ventana:

Seleccionamos la pestaña triggers


Elegimos el tipo de trigger, luego insertamos las sentencias de código para el trigger entre la
líneas

Begin

Lineas de codigo

End

Clic en Apply

Aparece esta ventana y para finalizar clic en Apply nuevamente


Recueden que para ver los trigers creados ejecutan la siguiente sentencia

Show triggers;

Una vez ejecutamos la repuesta del sistema la podemos ver asi


Y asi comprobamos su efecto sobre la tabla tb_seguridad_cliente
Observar cómo se graban las acciones sobre los registros

Bien ahora solo me que hacer las actividades extrayendo ideas todo esto, espero les sirva, y
también hagan sus aportes, siempre la cooperación es más efectiva, aunque resulta irónico
que los digo pues llevo casi y año trabajando solo, pero no me disgustaría cooperar con
compañeros colaboradores y comprometidos.

Você também pode gostar