Você está na página 1de 5

1

Base de datos I. Gua 11 Facultad: Ingeniera Escuela: Computacin Asignatura: Base de datos I

Tema: Disparadores Parte II.

Objetivo
Utilizar la sintaxis de un disparador en SQL Server Implementar disparadores en SQL Server

Materiales

Computadora con SQL Server 2008. Gua Nmero 11

Introduccin
Un desencadenador es una clase especial de procedimiento almacenado que se ejecuta siempre que se intenta modificar los datos de una tabla que el desencadenador protege. Los desencadenadores estn asociados a tablas especficas. Asociacin a una tabla Los desencadenadores se definen para una tabla especfica, denominada tabla del desencadenador. Invocacin automtica Cuando se intenta insertar, actualizar o eliminar datos de una tabla en la que se ha definido un desencadenador para esa accin especfica, el desencadenador se ejecuta automticamente. No es posible evitar su ejecucin. Imposibilidad de llamada directa A diferencia de los procedimientos almacenados del sistema normales, no es posible invocar directamente los desencadenadores, que tampoco pasan ni aceptan parmetros. Si se encuentra una instruccin ROLLBACK TRANSACTION, se deshar toda la transaccin. Si a continuacin de la instruccin ROLLBACK TRANSACTION en la secuencia de comandos del desencadenador hay una instruccin, sta se ejecutar. Los desencadenadores se crean con la instruccin CREATE TRIGGER. Esta instruccin especifica la tabla en la que se define el desencadenador, los sucesos para los que se ejecuta y las instrucciones que contiene.

Base de datos I, Gua 11

Sintaxis:

Cuando se especifica una accin FOR UPDATE, la clusula IF UPDATE (nombreColumna) permite centrar la accin en una columna especfica que se actualice. Tanto FOR como AFTER son sintaxis equivalentes que crean el mismo tipo de desencadenador, que se activa despus de la accin (INSERT, UPDATE o DELETE) que ha iniciado el desencadenador.

Procedimiento
Inserte los siguientes datos en la tabla employees de la Base de datos Northwind
insert into Employees(LastName,FirstName) values('Alfaro','Carlos') insert into Employees(LastName,FirstName) values('Bonilla','Jaime') insert into Employees(LastName,FirstName) values('Perez','Sheldon')

Ejemplo 1 digite el siguiente trigger

La instruccin DELETE siguiente activa el desencadenador y evita la transaccin. DELETE FROM Employees WHERE EmployeeID > 10 La instruccin DELETE siguiente activa el desencadenador y permite la transaccin. DELETE FROM Employees WHERE EmployeeID = 11

Base de datos I. Gua 10 3

Ejemplo 2 Disparador en base a una columna

El trigger anterior despues de actualizar la columna lastname se active y enva un mensaje, pruebe con la siguiente instruccin
UPDATE Employees set LastName='Quintanilla' where EmployeeID=12

Modificando un desencadenador Al cambiar la definicin se reemplaza la definicin existente del desencadenador por la nueva. Tambin es posible alterar la accin del desencadenador. Por ejemplo, si crea un desencadenador para INSERT y, posteriormente, cambia la accin por UPDATE, el desencadenador modificado se ejecutar siempre que se actualice la tabla. La resolucin diferida de nombres permite que en un desencadenador haya referencias a tablas y vistas que an no existen. Si el objeto no existe en el momento de crear el desencadenador, aparecer un mensaje de advertencia y SQL Server actualizar la definicin del desencadenador inmediatamente. Ejemplo 2

Eliminacin de un desencadenador Si desea eliminar un desencadenador, puede quitarlo. Los desencadenadores se eliminan automticamente cuando se elimina la tabla a la que estn asociados. De forma predeterminada, el permiso para eliminar un desencadenador corresponde al propietario de la tabla y no se puede transferir. Sin embargo, los miembros de las unciones de

Base de datos I, Gua 11

administradores del sistema (sysadmin) y propietario de la base de datos (db_owner) pueden eliminar cualquier objeto si especifican el propietario en la instruccin DROP TRIGGER. Sintaxis DROP TRIGGER nombreDesencadenador

Anlisis de resultados
Utilizando la siguiente base de datos realizar lo siguiente.

1- Crear un desencadenador que se active cada vez que se inserte un registro en la tabla pedidos y otro para la tabla producto. 2- Crear un desencadenador para la tabla producto, que se active cada vez que se inserte un registro o se actualice la columna precio, la condicin para aceptar al insercin o la actualizacin es que el precio costo no debe ser mayor que el precio venta.

Base de datos I. Gua 10 5


Hoja de cotejo:

Gua11:Disparadores

Parte
Mquina No: GL:

11

II
Alumno: Docente:

Fecha:

EVALUACION % CONOCIMIENTO Del 20 al 30% 1-4 Conocimie nto deficient e de los fundament os tericos 5-7 Conocimiento y explicacin incompleta de los fundamentos tericos 8-10 Conocimiento completo y explicacin clara de los fundamentos tericos Nota

APLICACIN DEL CONOCIMIENTO

Del 40% al 60%

ACTITUD Del 15% al 30% No tiene actitud proactiva . Actitud propositiva y con propuestas no aplicables al contenido de la gua. Tiene actitud proactiva y sus propuestas son concretas.

TOTAL

100%

Você também pode gostar