Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Triggers 120806104714 Phpapp01 PDF
Triggers 120806104714 Phpapp01 PDF
Son procedimientos asociados a una tabla. Se activan cuando se produce una eliminacin,
modificacin o insercin en la tabla asociada.
Ejemplos de uso de un trigger
Si tenemos una tabla de clientes, y otra de informes, por ej. cada vez que se produzca una
baja en clientes, almacenamos el nombre y apellidos del cliente en informe para
posteriormente hacer una estadstica con los clientes borrados.
Tenemos la tabla de nominas, cada vez que un usuario acceda a ella, el trigger se activa y
almacena su nombre en otra tabla.
Eliminacin en Cascada
Como se ve en la sintaxis, le
indicamos que es lo que va a
hacer en el trigger detrs del
For.
danilo.rodriguez@fec.uni.edu.ni 1
Microsoft Sql Server
Con lo que si por ej. borramos el departamento 20 de la tabla dept, este departamento se
almacenar en la tabla Deleted, una vez borrado, se desencadena el trigger, y borrara de la
tabla empleados, todos los empleados cuyo n de departamento, coincida con el que se ha
borrado y almacenado en la tabla deleted. Si borrasemos 4 departamentos con una misma
orden, se activara el trigger con cada departamento borrado.
Como hemos visto en el ejemplo anterior, para borrar existe la tabla de sistema deleted
donde almacena los registros borrados, al igual que para insertar almacena los registros
insertados en la tabla inserted, pero para modificar no existe ninguna tabla update, lo que
hace en realidad es insertar en la tabla deleted el registro antes de ser modificado y en la
tabla inserted el registro ya modificado, porque entiende que se ha borrado un registro y se
ha insertado otro.
Con lo cul para crear un trigger que se active con un update, trabajaremos con las tablas
deleted e inserted.
Ejemplo Update:
danilo.rodriguez@fec.uni.edu.ni 2
Microsoft Sql Server
Con lo que este ejemplo lo que hara es que cuando modificamos un registro en la tabla
dept, se activa el trigger, va a la tabla insert y busca los registros cuyo n de depto. Coincida
con
En este ejemplo inserto un nuevo empleado y lo que hago es mostrar el empleado insertado
desde la tabla inserted.
Create Trigger
Insertar_Emp
On Emp
for Insert
As
Select * from Inserted
danilo.rodriguez@fec.uni.edu.ni 3
Microsoft Sql Server
Super Ejemplo
El siguiente ejemplo almacenar en una tabla que crearemos un registro con datos de cada
fila que borremos, modifiquemos o insertemos.
Este registro contendr
N de empleado.
Usuario que realiz la consulta de accin.
Fecha de la consulta de accin.
Tipo de operacin realizada.
1 Creamos la tabla
2 Creamos el trigger de
borrado en la tabla de
empleados.
danilo.rodriguez@fec.uni.edu.ni 4
Microsoft Sql Server
TRIGGERS O DESENCADENADORES
1) Crear un Trigger que borre en cascada sobre la tabla relacionada cuando borremos
una sala. Mostrar el registro borrado al ejecutar el Trigger.
2) Crear un Trigger que se active cuando Actualicemos alguna sala del hospital,
modificando sus tablas relacionadas. Mostrar el registro Actualizado.
danilo.rodriguez@fec.uni.edu.ni 5
Microsoft Sql Server
5) Crear un Trigger que actue cuando se modifique la tabla hospital y sobre todas las
tablas con las que est relacionadas.
danilo.rodriguez@fec.uni.edu.ni 6
Microsoft Sql Server
Create
trigger ActualizarPlantilla on Plantilla
for update
as
declare @Hospital int
select @Hospital = i.hospital_cod
from hospital as h
inner join inserted as i
on h.hospital_cod = i.hospital_cod
if (@Hospital is null)
begin
print 'No Existe el codigo de Hospital'
danilo.rodriguez@fec.uni.edu.ni 7
Microsoft Sql Server
8) Crear un Trigger que guarde los datos en la tabla ControlTrigger cuando se realice
la baja de un empleado.
danilo.rodriguez@fec.uni.edu.ni 8
Microsoft Sql Server
9) Crear un Trigger que guarde los datos en la tabla ControlTrigger cuando se relice
una modificacin en un empleado. Guardar la hora de la actualizacin en un campo
aparte en la tabla ControlTrigger. (Aadir un campo)
10) Borrar todos los Triggers creados despus de haber sido probados y volver a dejar la
base de datos como estaba desde la copia de seguridad.
IMPLEMENTACION DE DESENCADENADORES
Trigger Instead Of
Es un tipo de trigger, que asociado a una vista, cuando se intenta realizar el tipo de consulta
que indica el trigger (insertar, modificar, o eliminar), una vez estn los registros en las
tablas inserted o deleted, la consulta se interrumpe y salta el trigger, con lo que podemos
manejar los datos que hay en estas tablas temporales mediante el trigger, esto es muy
prctico cuando queremos insertar en varias tablas pertenecientes a una vista, ya que con
una simple consulta no podremos, tendremos que trabajar con un trigger Instead Of y usar
las filas incluidas en la tabla inserted.
Sintaxis:
danilo.rodriguez@fec.uni.edu.ni 9
Microsoft Sql Server
Tenemos una vista que hace referencia a Departamentos y empleados, y contiene el n del
departamento y nombre de la tabla departamentos y el nombre y apellidos de la tabla
empleados. Si intentamos hacer un insert sobre la vista, sin el trigger dar error y no dejar
insertarlo, pero en cambio, con el triger:
Ejemplo:
danilo.rodriguez@fec.uni.edu.ni 10
Microsoft Sql Server
Dentro de vistas,
seleccionamos la deseada, y
elegimos la opcin Todas las
taras -> Administrar
desencadenadores...
...posteriormente, ya en la pantalla de
desencadenadores, en nombre elegimos el
desencadenador que queramos.
Ejemplo2:
danilo.rodriguez@fec.uni.edu.ni 11
Microsoft Sql Server
(1 filas afectadas)
Si cumplo los requisitos que yo he puesto en el trigger sobre la vista, me permitir insertar
el empleado.
danilo.rodriguez@fec.uni.edu.ni 12
Microsoft Sql Server
danilo.rodriguez@fec.uni.edu.ni 13
Microsoft Sql Server
danilo.rodriguez@fec.uni.edu.ni 14