8/18/2019 3-Guia Para La Implementación de Trigger
1/25
GUIA PARA LAIMPLEMENTACIÓN
DE TRIGGERDr. Luis Boy Chavil
8/18/2019 3-Guia Para La Implementación de Trigger
2/25
BIBLIOTECA ADRIÁTICAPRESTAMOS Y DEVOLUCIONES DE L IBROS
• La Biblioteca es una institución creada con lafinalidad de proveer de libros, manuales,revistas, CD, entre otros materiales de
lectura, a los diversos usuarios Lectores paracuya tarea se ha definido el siguienteprocedimiento:
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
3/25
Procedimiento
• Los Lectores son personas naturalesidentificados con una ficha de inscripción através de su número de DNI, nombrecompleto, dirección, número de teléfono fijo,
número de teléfono móvil, e-mail y unatributo denominado estado que tendrá lossiguientes valores: – 1. Lector castigado con libro prestado fuera de fecha,
– 2. libro indefinidamente,
– 3. Lector con libro prestado
– 4. Lector habilitado.
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
4/25
• Algunos libros tienen más de un ejemplardisponible para el servicio de lectura.
• Asimismo, se llevará registro de los Autores.
• Tendremos en cuenta que un Autor puedehaber escrito uno o más libros y un libropuede estar escrito por uno o más autores.
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
5/25
• De igual manera se tendrá en cuenta lainformación de las Editoriales a las quepertenecen los libros de la biblioteca.
• Los ejemplares de Libros pueden estardisponible para lectura en sala o a domicilio.
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
6/25
• Asimismo, los ejemplares tienen registro desu estado actual; el mismo que puede ser: – 1: “Buen estado”
– 2: “Manchado” – 3: “Roto”
– 4: “Perdido”
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
7/25
• Además; se llevará registro de ladisponibilidad del ejemplar del libro; es decir,si dicho ejemplar se encuentra en calidad de
“prestado”, para ello utilizaremos un atributodel Ejemplar que marcará 1 si el ejemplarestá prestado ó marcará 2, si el ejemplar estádisponible.
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
8/25
• Cuando el ejemplar de un libro es entregadoen calidad de “préstamo”, el atributodisponibilidad pasará a “prestado” ; es decir,
cambiará de 1 a 2. Cuando el ejemplar esdevuelto por el lector, el atributo cambiaránuevamente a “disponible” ; esto es, serámodificado de 2 a 1.
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
9/25
• La solicitud del Ejemplar de un Libro se lleva a cabo a
través de la Ficha de Préstamo en la cuál se consignaránlos siguientes datos: – Fecha de préstamo del Libro, DNI del Lector, Tipo de préstamo :
1: Lectura en sala
2. Lectura a domicilio
Fecha a devolver el ejemplar, Fecha de devolución
Al insertar el préstamo del ejemplar es null; pero se cargará al actualizar el registro
de devolución.
Estado del Libro
Se cargará en la actualización del registro de devolución y será:1. Buen estado
2. Manchado
3. Roto
4. Perdido
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
10/25
• Cuando un nuevo préstamo se “inserte” en latabla de préstamos haremos los siguientescontroles:
– Verificar el estado del lector para saber si estáautorizado.
– Verificar el estado del Libro para saber si estádisponible
– Actualizar el atributo disponibilidad del ejemplar,que pasará de disponible a “prestado”.
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
11/25
• Cuando un ejemplar ha sido devuelto, “Actualizaremos” la tabla de préstamos y llevaremosa cabo los siguientes controles: – Verificar que la fecha a devolver sea menor o igual a la
fecha de devolución del libro. Si no es asi, aplicar unasanción y actualizar el “estado” del lector teniendo en cuentaque su nuevo valor será: 3. “Lector amonestado hasta nuevoaviso”.
– Verificar el estado del Libro y compararlo con el estado delejemplar; si no coinciden; aplicar una sanción, y actualizar elestado del Lector según sea el caso.
• Actualizar el atributo disponibilidad del ejemplar, quepasará de 1. Prestado a su nuevo valor 2. Disponible.
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
12/25
• Al Insertar un nuevo préstamo de Libro seejecutará el Trigger FOR Insert.
• Al Actualizar la devolución de un Libro
prestado, se ejecutará el Trigger FOR Update.
Procedimiento …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
13/25
Modelado de datos
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
14/25
TRIGGER For I nser t sobre MOVE_L IBROS
(Al I nsertar un nuevo Préstamo de L ibro)
CREATE TRIGGER InsertaPrestamosON MOVE_LIBROS
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;DECLARE @estadoLector char(01)
DECLARE @disponibilidad char(01)
-- Obtener el estado del Lector
select @estadolector =
(select LEC_estado
from LECTORES L
inner join inserted i
on L.LEC_dni = i.LEC_dni)
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
15/25
TRIGGER …
-- Obtener la disponibilidad del Ejemplar
select @disponibilidad =
(select EJE_disponibilidad
from EJEMPLARES E
inner join inserted i
on E.EJE_numero = i.EJE_numero)
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
16/25
if @disponibilidad = '1' AND @estadolector = '4'begin
UPDATE EJEMPLARES
SET EJE_disponibilidad = '2'
FROM EJEMPLARES E
inner join MOVE_LIBROS M
on E.EJE_numero = M.EJE_numero
UPDATE LECTORES
SET LEC_estado='3'
from LECTORES Linner join MOVE_LIBROS M
on L.LEC_dni = M.LEC_dni
end
TRIGGER …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
17/25
ELSEbegin
if @disponibilidad = 2
Begin
RAISERROR('El Libro esta prestado', 10,1)
ROLLBACK TRANSACTIONEnd
IF @estadolector = 1
Begin
RAISERROR('El Lector tiene libro prestado fuera de fecha', 10,1)
ROLLBACK TRANSACTION
End
TRIGGER …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
18/25
IF @estadolector = 2
Begin
RAISERROR('El Lector esta castigado', 10,1)
ROLLBACK TRANSACTION
EndIF @estadolector = 3
Begin
RAISERROR('El Lector tiene un libro prestado', 10,1)
ROLLBACK TRANSACTION
Endend
END
GO
TRIGGER …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
19/25
TRIGGER For Update para MOVE_LIBROS
(Actualización de la Devolución de L ibros)
CREATE TRIGGER devolucionPrestamos
ON MOVE_LIBROS
FOR UPDATE
ASBEGIN
SET NOCOUNT ON
DECLARE @estadolibro char(01)
DECLARE @fechaDevuelto datetime
DECLARE @fechaDevolver datetime
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
20/25
TRIGGER For Update …
select @estadolibro =
(select MOV_estadolibro
from inserted)
select @fechaDevuelto =
(select MOV_estadolibro
from inserted)
select @fechaDevolver =
(select MOV_estadolibro
from inserted)DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
21/25
IF(@estadolibro = 1)
BEGIN
UPDATE EJEMPLARES
SET EJE_disponibilidad = '1'
FROM inserted I
inner join EJEMPLARES E
on E.LIB_codigo = I.LIB_codigo
and E.EJE_numero = I.EJE_numero
TRIGGER For Update …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
22/25
IF(@fechaDevuelto
8/18/2019 3-Guia Para La Implementación de Trigger
23/25
ELSE
BEGIN
UPDATE LECTORES
SET LEC_estado='3' --Inhabilitado
FROM inserted I
inner join LECTORES L
on I.LEC_dni = L.LEC_dni
END
TRIGGER For Update …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
24/25
-- Actualiza el estado de los EjemplaresUPDATE EJEMPLARES
SET EJE_estado=@estadoLibro
FROM inserted I
inner join EJEMPLARES E
on E.LIB_codigo = I.LIB_codigoand E.EJE_numero = I.EJE_numero
END
ELSE --No está permitido devolver libros en mal estado
BEGIN
rollback transactionraiserror('Libro en mal estado', 10, 1)
END
END
go
TRIGGER For Update …
DR. LUIS BOY CHAVIL
8/18/2019 3-Guia Para La Implementación de Trigger
25/25
GUIA PARA LAIMPLEMENTACIÓN
DE TRIGGERDr. Luis Boy Chavil
Top Related