You are on page 1of 36

DML Transact SQL

Sesin X Triggers

Triggers
Duracin 2 Horas

Objetivo particular
Al finalizar el modulo el participante ser capaz de crear los diferentes tipos de triggers bsicos que pueden ser usados en una base de datos.

Introduccin
El uso de los procedimientos almacenados desarrollado en la unidad pasada indica que las posibilidades de administracin que se pueden tener sobre la base de datos a travs del analizador corporativo. Los triggers son una tipo especial de procedimientos almacenados soportado por el SQL Server, en la presente unidad se desarrolla el tema de los desencadenadores.

Introduccin a los Triggers

Objetivo especfico: El participante al finalizar, identificar las caractersticas de los triggers como desencadenadores de acciones sobre las operaciones de modificacin de datos.

Introduccin a los Triggers

El uso de los triggers es empleado cuando se desea realizar una accin especfica en las operaciones de insercin, borrado o actualizacin sobre una tabla en particular.

Introduccin a los Triggers


Un trigger es un muy similar a un procedimiento almacenado, pero no puede ser ejecutado de forma directa, siempre responde a una accin de modificacin de datos sobre una tabla.

Introduccin a los Triggers

Por qu usar triggers?


Para

reforzar la integridad relacional Para reforzar las reglas de negocio.

Introduccin a los Triggers


Restricciones
Alter

Database Create Database Drop Database Disk init Disk Resize Load Database Load Log Reconfigure Restore Database Restore Log

Creacin y mantenimiento de Triggers.

Objetivo especfico: El participante al concluir el subtema mantendr triggers bsicos sobre una base una base de datos de SQL Server.

Creacin y mantenimiento de Triggers.

Creacin de triggers Para crear un trigger se debe emplear la instruccin de SQL CREATE TRIGGER, se debe ser miembro del rol de administradores, dueo de la base de datos. Un trigger puede ser creado, alterado o borrado.

Creacin y mantenimiento de Triggers.


CREATE TRIGGER <nombre> ON <tabla> [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE} AS <instrucciones>

Creacin y mantenimiento de Triggers.

Insercin Al momento de realizar una insercin sobre una tabla que tiene definido un INSERT TRIGGER, SQL Server maneja una tabla virtual llamada inserted que contiene una copia de la(s) fila(s) insertada(s).

Creacin y mantenimiento de Triggers.


El siguiente ejemplo muestra como al momento de realizar la insercin sobre una tabla se puede usar la tabla lgica inserted. Este ejemplo se realiza sobre la base de datos de pubs, en la tabla de jobs. Reportar el registro insertado.

Creacin y mantenimiento de Triggers.


Create trigger t_insjob on jobs for insert as select 'Registro insertado' as notificacin select * from inserted

Creacin y mantenimiento de Triggers.


Respetando las restricciones de la tabla la insercin:
insert

into jobs values ('psychologist', 120, 250)

Creacin y mantenimiento de Triggers.

Borrado Al momento de realizar un borrado sobre una tabla que tiene definido un DELETE TRIGGER, SQL Server maneja una tabla virtual llamada deleted que contiene una copia de la(s) fila(s) eliminada(s).

Creacin y mantenimiento de Triggers.


El siguiente ejemplo muestra como al momento de realizar una eliminacin sobre una tabla se puede usar la tabla lgica deleted. Este ejemplo se realiza sobre la base de datos de pubs, en la tabla de jobs. Reportar el registro eliminado.

Creacin y mantenimiento de Triggers.


create trigger t_deljob on jobs for delete as select 'registro eliminado' as notificacin select * from deleted

Creacin y mantenimiento de Triggers.


Respetando las restricciones de la tabla la eliminacin:
delete

from jobs where job_desc='psychologist'

Creacin y mantenimiento de Triggers.

Actualizacin Al momento de realizar una actualizacin sobre una tabla que tiene definido un UPDATE TRIGGER, SQL Server maneja la actualizacin con las tablas lgicas deleted e inserted para almacenar las filas antes y despus de la modificacin.

Creacin y mantenimiento de Triggers.


El siguiente ejemplo muestra como al momento de realizar una actualizacin sobre una tabla se pueden usar las tablas lgicas. Este ejemplo se realiza sobre la base de datos de pubs, en la tabla de titles. Reportar los cambios realizados.

Creacin y mantenimiento de Triggers.


Create trigger t_uptit on titles for update as select * from deleted select * from inserted

Creacin y mantenimiento de Triggers.


Respetando las restricciones de la tabla la actualizacin:
update

titles set price = price * 1.15 where price between 19.00 and 20.00

Creacin y mantenimiento de Triggers.

IF UPDATE (<atributo>) Se puede preguntar de forma directa si algn atributo esta siendo modificado, para ello basta con usar la funcin UPDATE() que retornar un valor Falso o Verdadero.

Creacin y mantenimiento de Triggers.


El siguiente ejemplo muestra como al momento de realizar una actualizacin sobre una tabla se puede usar la funcin update(). Este ejemplo se realiza sobre la base de datos de pubs, en la tabla de titles. Reportar que no se puede modificar el atributo price.

Creacin y mantenimiento de Triggers.


alter trigger t_uptit on titles for update as if update(price) begin print 'you cant modify the title price' Rollback transaction end

Creacin y mantenimiento de Triggers.


Respetando las restricciones de la tabla la actualizacin:
update

titles set price = price * 1.15 where price between 19.00 and 20.00

Creacin y mantenimiento de Triggers.

INSTEAD OF Se pueden crear Instead of triggers con lo que SQL Server ignora cualquier accin y realiza nicamente lo que se le indica en el disparador. Se puede crear un Instead of tanto para insercin como para actualizacin o borrado

Creacin y mantenimiento de Triggers.

INSTEAD OF Una vez existente un trigger del tipo Instead of se ignoran a los tipo After o For.

Creacin y mantenimiento de Triggers.


El siguiente ejemplo muestra como al momento de realizar una insercin sobre una tabla se puede bloquear la accin e indicar que no se permite tal operacin.

Creacin y mantenimiento de Triggers.


Create trigger t_institles on titles instead of insert as select 'You cannot insert information in this table' as Error select * from inserted

Creacin y mantenimiento de Triggers.


Respetando las restricciones de la tabla la insercin:
insert

into titles values ('BU9865','The power of the brain','psychologic', 1389, 25.26, 5000.000, 10,4095,null,'Sep 22, 2000')

Creacin y mantenimiento de Triggers.


Existe una serie de instrucciones que permite el modificar, borrar o temporalmente deshabilitar un trigger.
Alter Trigger <nombre> -- Modifica Drop Trigger <nombre> -- Elimina

Creacin y mantenimiento de Triggers.

Deshabilitando un trigger Alter Table <nombre_tabla> Disable Trigger {all | <nombre_trigger>}


Habilitando un trigger Alter Table <nombre_tabla> Enable Trigger {all | <nombre_trigger>}

Conclusin
Uno de los objetos ms complejos de la base de datos son junto con los procedimientos almacenados son los triggers, su desarrollo y comprensin requieren de tiempo y facilidad de programacin en la mayora de los casos, esta unidad permiti al usuario comprender su manejo y utilizacin bsica.

You might also like