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.
Puedes seguir el curso
Completo desde:
Puedes descargar el Material del Curso desde, Archivos del Curso, Backup y Presentaciones:
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
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
Triggers (Disparadores) Sql Server - Bases de Datos en Microsoft Sql Server 2014 (33-35)
Reviewed by IncanatoIt-ad
on
10:56
Rating:
No hay comentarios: