Ensayo Disparadores Base De Datos
Enviado por olizardo • 2 de Febrero de 2013 • 611 Palabras (3 Páginas) • 763 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
...