Documentos de Académico
Documentos de Profesional
Documentos de Cultura
51191625-Trigger SQL Server
51191625-Trigger SQL Server
danilo.rodriguez@fec.uni.edu.ni
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.
Ejemplo de Trigger para Update
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
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
Ejemplo de Trigger para Insert
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
1 Creamos la tabla
2 Creamos el trigger de
borrado en la tabla de
empleados.
danilo.rodriguez@fec.uni.edu.ni
danilo.rodriguez@fec.uni.edu.ni
danilo.rodriguez@fec.uni.edu.ni
danilo.rodriguez@fec.uni.edu.ni
danilo.rodriguez@fec.uni.edu.ni
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:
Create Trigger NombreTrigger
On Vista
Instead Of
As
Sentencias SQL
danilo.rodriguez@fec.uni.edu.ni
danilo.rodriguez@fec.uni.edu.ni
10
...posteriormente, ya en la pantalla de
desencadenadores, en nombre elegimos el
desencadenador que queramos.
Ejemplo2:
N EMPLEADO, APELLIDO, OFICIO Y NOMBRE DE DEPARTAMENTO
Al insertar sobre la vista el siguiente registro:
insert into VistaEmpDept (Emp_no, Apellido, Oficio, Dnombre) Values
(8888,Angulo,Vendedor,Investigacin)
El trigger instead of saltar e insertar el empleado con su correspondiente n de
departamento, ya que en empleados no hay nombre de departamento, con lo que
averiguaremos el n de departamento haciendo una select sobre la tabla de departamentos.
Create Trigger Inserta_Emp
On TriggerEmpDept
Instead Of Insert
As
declare @Dept int
select @dept = dept_no from dept,inserted
where dept.dnombre = inserted.dnombre
if @dept is null
Begin
print 'No existe departamento con ese nombre'
print 'No se ha realizado insercin'
End
else
insert into emp (emp_no,apellido,fecha_alt,dept_no)
select inserted.emp_no,inserted.apellido
,inserted.fecha_alt,@dept from inserted
danilo.rodriguez@fec.uni.edu.ni
11
danilo.rodriguez@fec.uni.edu.ni
12
danilo.rodriguez@fec.uni.edu.ni
13
danilo.rodriguez@fec.uni.edu.ni
14