Вы находитесь на странице: 1из 2

1 TEMA: TRIGGERS O DISPARADORES

1.1 OBJETIVOS
Al finalizar la prctica el estudiante estar en condiciones de: Escribir triggers(disparadores) haciendo uso
del lenguaje de programacin del SGBD.

1.2 CONTENIDO DE LA PRCTICA.


Para realizar la prctica efectuar previamente lo siguiente:

Crear una carpeta de trabajo en la Unidad D, en esta carpeta almacenar el cdigo fuente de los
procedimientos almacenados.
Ejecutar el analizador de consultas del SQL Server.
Se trabajar con la base de datos creada en la primera prctica.

1.3 PARTE 1.- Triggers


A. CONCEPTO Y SINTAXIS
Un trigger(o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta
automticamente cuando se produce un evento en el servidor de bases de datos.
SQL Server proporciona los siguientes tipos de triggers:

Trigger 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.
Trigger 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 trigger estn dentro de la transaccin original (Insert, Delete o Update) por lo cual si dentro de nuestro
trigger hacemos un RollBack Tran, no solo estaremos echando atrs nuestro trigger sino tambin toda la
transaccin; en otras palabras si en un trigger ponemos un RollBack Tran, la transaccin de Insert, Delete o
Update volver toda hacia atrs.
En este caso obtendremos el siguiente mensaje de error: La transaccin termin en el desencadenador. Se
anul el lote.

NOTA. Usar el prefijo tr nombrar un trigger en el momento de su creacin.


La sintaxis de un trigger es:
CREATE TRIGGER <Trigger_Nombre>
ON <Tabla>
AFTER <INSERT,DELETE,UPDATE>
AS
BEGIN
-- Instrucciones
END

B. DISPARADOR DE INSERCIN
Cuando se inserta una nueva fila en una tabla, SQL Server inserta los nuevos valores en la tabla INSERTED
el cual es una tabla del sistema. Est tabla toma la misma estructura del cual se origin el TRIGGER, de tal
manera que se pueda verificar los datos y ante un error podra revertirse los cambios.
Ejercicio 1.

Crear un trigger que solo permita matricular alumnos con notas vlidas.

SISTEMAS DE BASES DE DATOS II

Ing. Jisbaj Gamarra Salas

CREATE TRIGGER tr_Matricular


ON Matricula
FOR Insert
AS
BEGIN
--Verificar que la nota sea una nota vlida
if not exists(select * from inserted where Nota
in('1','2','3','4','5','6','7','8','9','10','11','12',
'13','14','15','16','17','18','19','20','NSP'))
begin
--cancelar la insercin del registro
rollback transaction
end
END

C. DISPARADOR DE ELIMINACIN
Cuando se elimina una fila de una tabla, SQL Server inserta los valores que fueron eliminados en la tabla
DELETED el cual es una tabla del sistema. Est tabla toma la misma estructura del cual se origin el
TRIGGER, de tal manera que se pueda verificar los datos y ante un error podra revertirse los cambios. En
este caso, la reversin de los cambios significar restaurar los datos eliminados.

D. DISPARADOR DE ACTUALIZACIN
Cuando se actualiza una fila de una tabla, SQL Server inserta los valores que antiguos en la tabla DELETED
y los nuevos valores los inserta en la tabla INSERTED. Usando estas dos tablas se podr verificar los datos
y ante un error podran revertirse los cambios.

ISC-UNSAAC

Pgina 2| 2