Está en la página 1de 7

TALLER DE DE BASE DE DATOS

COSS CAMILO DELIO GRUPO 5J3 8:00-9:00HRS

TITULO: DISPARADORES: TEORA BSICA SQL SERVER

CARRASCO MNDEZ ERICK RAMN AGUILAR HERNANDEZ FERNANDO MITCHEL ALVARADO DE LA CRUZ ROBERTO

DISPARADORES

Un disparador (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. 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. Transaccin Una transaccin es un conjunto de operaciones que van a ser tratadas como una nica unidad. Estas transacciones deben cumplir 4 propiedades fundamentales comnmente conocidas como ACID (atomicidad, coherencia, asilamiento y durabilidad).

DISPARADORES

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. La sintaxis general de un trigger es la siguiente.
CREATE TRIGGER [propietario.]nombreDesencadenador ON [propietario.]nombreTabla [WITH ENCRYPTION] {FOR | AFTER| INSTED OF } {INSERT| UPDATE| DELETE} AS [IF UPDATE (nombreColumna)...] [{AND| OR}] UPDATE (nombreColumna)...] instruccionesSQL END

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

DISPARADORES

Ejemplo 1:

Digite: Select * from informacin_tienda , para verificar que los datos estn ingresados . Digite: Select * from ventas_tienda, verifique que no existe ningn valor en esa tabla.

DISPARADORES

Ejecute el siguiente script y luego revise la tabla ventas_tiendas


INSERT INTO ventas_tienda (tienda,venta,fecha) SELECT tienda,venta,fecha FROM informacion_tienda

ACTUALIZAR Agreguemos un campo ventaIva


ALTER TABLE ventas_tienda ADD ventaIva float

Inicialmente ese campo aparece vacio en todas las columnas y queremos que ese campo contenga la venta + el 13% del iva, para esto utilizamos la siguiente sentencia.
UPDATE ventas_tienda SET ventaIva=venta*1.13 OUTPUT INSERTED.*

DISPARADORES

Ejemplo 2: 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') Use Northwind GO CREATE TRIGGER Empl_Delete ON Employees FOR DELETE AS IF (SELECT COUNT(*) FROM DELETE)>1 BEGIN RAISERROR('No se puede borrar ms de un empleado al mismo tiempo.';16,1) ROLLBACK TRANSACTION END

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

DISPARADORES

Ejemplo 3:
Use Northwind GO CREATE TRIGGER upda_emp ON Employees AFTER UPDATE AS IF UPDATE(Lastname) BEGIN print 'Se realizo un cambio en el apellido de de employes' END

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