3-guia para la implementación de trigger

Upload: abel-barrios-mendez

Post on 07-Jul-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

  • 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