Triggers (Disparadores) Sql Server - Bases de Datos en Microsoft Sql Server 2014 (33-35)
Buen día amigos de IncanatoIt, continuamos en este curso de base de datos en Microsoft Sql Server 2014, en este artículo trabajaremos con triggers o Disparadores.
Programación Transact SQL
Puedes seguir el curso Completo desde:
Puedes descargar el Material del Curso desde:
Archivos del Curso, Backup y Presentaciones http://adf.ly/pl1Bk
Programación Transact SQL
Scripts
Procedimientos Almacenados
Funciones
Triggers
Triggers
Un trigger (disparador) en una base de datos es un procedimiento que se ejecuta cuando se cumple una determinada condición al realizar una operación.
Dependiendo la base de Datos, los triggers pueden ser de inserción (INSERT), actualización (UPDATE) o borrado (DELETE).
Tipos de Triggers
Tenemos dos tipos de triggers:
- Triggers DML
- Triggers DDL
Triggers - Sintáxis
Create Trigger Nombre_Trigger
ON [Table | View]
FOR | AFTER | INSTEAD OF
[INSERT] [,] [UPDATE] [,] [DELETE]
AS
Sentencia SQL
Ejemplos:
Ejemplo 1:
Implementar un Trigger que permita mostrar un mensaje cada vez que se inserte o actualice un registro en la tabla pasajero.
Tabla Pasajero
--Implementamos nuestro trigger
CREATE TRIGGER trmensaje_pasajero
ON pasajero --Tabla donde se ejecuta el desencadenador
--El desencadenador se activará cuando
--las operaciones Insert y Update son correctas
FOR INSERT, UPDATE
AS
--Instrucciones del desencadenador
PRINT 'Pasajero actualizado correctamente'
go
--Probar nuestro trigger
update pasajero set nombre='Jcarlos'
where num_documento='47715777'
go
Ejemplo 2:
Implementar un trigger que permita crear una replica de los registros insertados en la tabla avion para dicho proceso implementar una nueva tabla llamada avionBAK con las mismas columnas de la tabla avion.
Tabla Avión
--Evaluamos si ya existe la tabla avionBAK
if object_id('avionBAK') is not null
begin
drop table avionBAK
end
go
--Creamos la tabla pasajeroBAK
CREATE TABLE avionBAK
(idavion char(5) not null primary key,
idaerolinea int not null,
fabricante varchar(40) null,
tipo varchar(30) not null,
capacidad int not null
)
go
--Evaluamos si ya existe el trigger y si ya existe
--lo eliminaos para implementarlo de nuevo
if object_id('replicaavion') is not null
begin
drop trigger replicaavion
end
go
--Implementamos el trigger que replicará los registros
--de la tabla avión
create trigger replicaavion
on avion
AFTER INSERT
AS
BEGIN
INSERT avionBAK select * from inserted
END
GO
--Probar nuestro trigger
insert into avion values (4,1,'CHAirport','Comercial',250)
Ejemplo 3:
Implementar un trigger que permita controlar el registro de un pago, se deberá evaluar que el monto a registrar sea mayor que cero en la columna monto de la tabla pago.
Tabla Pago
--Evaluamos si ya existe nuestro trigger
--si ya existe lo eliminamos para implementarlo
--nuevamente
If object_id('validapago') is not null
begin
drop trigger validapago
end
go
--Creamos nuestro trigger
CREATE TRIGGER validapago
ON pago
--El desencadenador se activará cuando
--la operación Insert sea correcta
FOR INSERT
--Instrucciones del desencadenador
AS
IF (select monto from inserted)<=0
BEGIN
ROLLBACK TRANSACTION
PRINT 'No puede registrar monto Cero'
END
ELSE
PRINT 'Pago registrado correctamente'
GO
--Probamos la implementación de nuestro trigger
insert into pago (idreserva,fecha,idpasajero,monto,tipo_comprobante,
num_comprobante,impuesto) values(1,'2015-09-12','P0000007',0,'Factura',
'0001-00015',0.18)
Triggers (Disparadores) (33-35) Bases de Datos en Microsoft Sql Server 2014
Saludos Imperio, un abrazo a la distancia.
Triggers (Disparadores) Sql Server - Bases de Datos en Microsoft Sql Server 2014 (33-35)
Reviewed by Juan Carlos Arcila Díaz
on
10:56
Rating:
No hay comentarios: