Ensayo Disparadores Base De Datos
olizardo2 de Febrero de 2013
611 Palabras (3 Páginas)801 Visitas
Tema: Disparadores – Parte II.
Objetivo
Utilizar la sintaxis de un disparador en SQL Server
Implementar disparadores en SQL Server
Materiales y
Computadora con SQL Server 2008.
Guía Número 11
Introducción
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 están asociados a tablas específicas.
Asociación a una tabla
Los desencadenadores se definen para una tabla específica, denominada tabla del desencadenador.
Invocación automática
Cuando se intenta insertar, actualizar o eliminar datos de una tabla en la que se ha definido un desencadenador para esa acción específica, el desencadenador se ejecuta automáticamente. No es posible evitar su ejecución.
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 parámetros.
Si se encuentra una instrucción ROLLBACK TRANSACTION, se deshará toda la transacción. Si a continuación de la instrucción ROLLBACK TRANSACTION en la secuencia de comandos del desencadenador hay una instrucción, ésta se ejecutará. Los desencadenadores se crean con la instrucción CREATE TRIGGER. Esta instrucción especifica la tabla en la que se define el desencadenador, los sucesos para los que se ejecuta y las instrucciones que contiene.
2 Base de datos I, Guía 11
Sintaxis:
Cuando se especifica una acción FOR UPDATE, la cláusula IF UPDATE (nombreColumna) permite centrar la acción en una columna específica que se actualice. Tanto FOR como AFTER son sintaxis equivalentes que crean el mismo tipo de desencadenador, que se activa después de la acción (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 instrucción DELETE siguiente activa el desencadenador y evita la transacción.
DELETE FROM Employees WHERE EmployeeID > 10
La instrucción DELETE siguiente activa el desencadenador y permite la transacción.
DELETE FROM Employees WHERE EmployeeID = 11
Base de datos I. Guía 10 3
Ejemplo 2 Disparador en base a una columna
El trigger anterior despues de actualizar la columna lastname se active y envía un mensaje, pruebe con la siguiente instrucción
UPDATE Employees set LastName='Quintanilla' where EmployeeID=12
Modificando un desencadenador
Al cambiar la definición se reemplaza la definición existente del desencadenador por la nueva. También es posible alterar la acción del desencadenador. Por ejemplo, si crea un desencadenador para INSERT y, posteriormente, cambia la acción por UPDATE, el desencadenador modificado se ejecutará siempre que se actualice la tabla. La resolución diferida de nombres permite que en un desencadenador haya referencias a tablas y vistas que aún no existen. Si el objeto no existe en el momento de crear el desencadenador, aparecerá un mensaje de advertencia y SQL Server actualizará la definición del desencadenador inmediatamente.
Ejemplo 2
Eliminación de un desencadenador
Si desea eliminar un desencadenador, puede quitarlo. Los desencadenadores se eliminan automáticamente cuando se elimina la tabla a la que están asociados. De forma predeterminada, el permiso
...