triggers - disparadores · son procedimientos que se ejecutan automáticamente cuando se cumple una...

13
Guía Sencilla Jair Ospino Ardila -- [email protected]

Upload: lyhanh

Post on 14-Oct-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

Guía Sencilla

Jair Ospino Ardila -- [email protected]

Page 2: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

Son procedimientos que se ejecutan automáticamente cuando se

cumple una condición establecida.

Los triggers pueden ser de:

Inserción (INSERT)

Actualización (UPDATE)

Eliminación (DELETE).

NOTA: Para poder crear el Disparador hay que tener presente:

Deben existir las Tablas Asociadas a el Disparador El Disparador no debe tener un nombre asociado a una palabra

reservada del sistema. Se debe previamente modificar el comodín de ejecución de

comandos que esta por defecto (;). para ello utilizamos DELIMITER @ OJO --> no es obligatorio - @ - puede ser cualquier comodín

No se permite dentro de la Sentencia del trigger ejecutar un comando Select.

No se admiten más de un trigger que relacionen a una misma tabla con la misma acción. Hasta ahora versión del Ejemplo 5.5.24 año 2013

DELIMITER @

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

For Each Row

Begin

Sentencia a Ejecutar [insert, update, delete]

End;

@

DELIMITER ;

Page 3: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

CREATE database IF NOT EXISTS bdTrigger;

USE bdTrigger;

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;

/* 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;

Page 4: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)
Page 5: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)
Page 6: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

NOTA: El comando new nos permite referenciar al valor que viene por primera

vez, seguido por el nombre del campo que deseamos tomar de la tabla a la cual definimos en el disparador al momento de crearlo (tb_cliente)

Si lo que deseamos es INSERTAR (insert) solamente podemos utilizamos el comando new.

Si lo que deseamos es ACTUALIZAR (update) podremos utilizar los dos

comandos permitidos new y old.

Si usamos -- old -- hacemos referencia al dato que contenía el registro antes de modificarlo.

si lo que deseamos es ELIMINAR (delete) solamente podemos utilizar el

comando old.

/* 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 ;

Page 7: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

/* 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*/

DELIMITER @

CREATE TRIGGER tr_delete_cliente BEFORE 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 ;

Page 8: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)
Page 9: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)
Page 10: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

/* 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' );

Page 11: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

/* 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;

Page 12: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

/* 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;

Page 13: Triggers - Disparadores · Son procedimientos que se ejecutan automáticamente cuando se cumple una condición establecida. Los triggers pueden ser de: Inserción (INSERT)

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

DROP TRIGGER tr_cliente;