Está en la página 1de 2

CREACIN DE TRIGGERS(DISPARADORES,DESENCADENADORES)

Un desencadenador (o Trigger) es una clase especial de procedimiento almacenado que se ejecuta automticamente cuando se produce un evento en el servidor de bases de datos.
Es una sentencia sql que se guarda en la base de datos que se va a ejecuta cuando se reliza una accin sobre una tabla.
Segn el tipo de evento que los desencadena se clasifican en:
Desencadenadores DML
Desencadenadores DDL
Desencadenadores LOGON
Los desencadenadores DML se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulacin de datos (DML). Los eventos DML son instrucciones INSERT,
UPDATE o DELETE de una tabla o vista.
Los desencadenadores DDL se ejecutan en respuesta a una variedad de eventos de lenguaje de definicin de datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE,
ALTER y DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL.
Los disparadores logon se activan en respuesta al evento LOGON que se genera cuando se establece la sesin de un usuario.
Caractersticas
Cuando se crea un trigger, se tiene acceso a dos tabals temporales INSERTED y DELETED, son temporales, tienen la misma estructura de la tabla en que fueron invocadas solo
que son almacenadas en la memoria no en el disco.
Cuando la estructura INSERT, UPDATE O DELETE se ejecutan. Todos los datos son copiados a estas tablas con la misma estructura.

Los valores de las tablas INSERTED y DELETED son accesibles nica y exclusivamente por el trigger, una ves ejecutado el trigger las tablas desaparecen.

Sintxis
Ejemplo trigger sobre la insercin
create trigger nombre
on tabla
for insert as
begin
declare varibles as tipo
set uso de variable
update nombre_tabla
set uso de variables
where condicion
end
Ejemplo trigger sobre la insercin
create trigger ejecuta_venta
on ventas
for insert as
begin
declare @producto as int
declare @cantidad as int
set @producto = (select codigo_pd from inserted)
set @cantidad = (select cantidad_venta from inserted)
update producto
set cantidad_pd =cantidad_pd - @cantidad
where codigo_pd like @producto
end
1.

Crear una nueva tabla denominada ventas en la base de datos prueba con los siguientes campos:

2.

Abrir una nueva ventana de Consultas Sql y transcribir el codigo del ejemplo asi

use prueba
create trigger ejecuta_venta
on ventas
for insert as
begin
declare @producto as nchar(10)
declare @cantidad as int
set @producto = (select codigo_pd from inserted)
set @cantidad = (select cantidad_venta from inserted)
update producto
set cantidad_pd =cantidad_pd - @cantidad
where codigo_pd like @producto
end
3.
4.

Use la opcin
para la ejecucion del trigger
Realizar las siguientes consulta a la tabla ventas y productos

select * from ventas


select * from producto
Observar los valores de los campos de la tabla ventas y producto especialmente en el campo cantidad_pd de la tabla producto

La tabla ventas no mostrara ningun dato


5.

Insertar una fila en la tabla ventas asi:

insert into ventas(codigo_pd, cantidad_venta) values ('c04', 2)


6.

Vuelva hacer la consulta en la tabla ventas y producto

select * from ventas


select * from producto
Notese como actuo el trigger sobre las dos tablas
El producto con el cdigo c04 disminuyo en 2 su valor

También podría gustarte