sábado, 19 de noviembre de 2016

Creación de trigger en Microsoft SQL Server

Un trigger es un desencadenador que se ejecuta automáticamente cuando se produce un evento sobre una tabla. Se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulación de datos (DML).
Los eventos DML son instrucciones Insert, Update o Delete que se aplican a una tabla o vista. 


Ejemplo 1: Crear un trigger que no permita ingresar un precio negativo en la tabla Producto.

Create trigger TR_Inserta_Pro
            On Producto FOR Insert
As
-- La tabla (temporal) inserted contiene los datos que se van a ingresar
If (select pre_pro from inserted)<0
Begin
            Print 'Precio Negativo'
            Rollback --Anula la transacción Insert
End

Ejemplo 2: Crear un trigger que inserte un registro en la tabla auditoría en el caso que se cambie el valor del precio de un Producto.

Create table auditoria
(id_auditoria int identity(1,1) not null primary key,
fecha_auditoria date not null, 
id_pro int not null,
pre_nuevo decimal(7,2) not null,
usuario varchar(20) not null)
-- Creación de trigger TR_Actualiza_Pro.
Create trigger TR_Actualiza_Pro
                      On Producto FOR Update
As
Declare @id int
Declare @nuevopre decimal(7,2)
Select @nuevopre=pre_pro from Inserted
Insert into auditoria values (CONVERT (date, GETDATE()),5,@nuevopre, user)
--Probamos el trigger, modificamos el precio de un producto.

Update Producto set pre_pro =1.5 where id_pro=5

No hay comentarios.:

Publicar un comentario