none
TRIGGER EVALUAR ESTADOS RRS feed

  • Pregunta

  • Hola, buenas tarde tengo la siguiente duda con los triggers, me plantearon esta pregunta:

    crear un trigger que permita actualizar el campo estado de la tabla Alquiler (de 0 a 1) cuando en la tabla Detalle_Alquiler no exista ningún registro con estado 0 para un numero de alquiler.

    Para que esto suceda el trigger deberá evaluar cada vez que se realice una actualización del campo estado de una fila (película) en la tabla Detalle_Alquiler si es que ya no existen mas películas en ese numero de alquiler por devolver(campo estado=0), entonces se actualizara el campo estado en la tabla ALQUILER dándole el valor 1, lo cual significara que el Alquiler ya esta completado. Enviando un simple mensaje (print): El alquiler esta completo. todas sus películas han sido devueltas.

    Tabla Alquiler(

    num_alq int no null Primary key,

    cod_cli char(5)

    fecha_alq smalldatetime,

    fecha_dev smalldatetime,

    estado int )--- estado 0 sin prestamo , 1 en prestamo

    Tabla Detalle_Alquiler(

    num_alq int,

    cod_pel char(5),

    cant int,

    precio money,

    estado int)    ---- estado 1 prestado 0 devuelto

    miércoles, 29 de noviembre de 2017 19:51

Respuestas

  • Sí sólo buscas el código para presentar el trabajo ahí lo tienes, si buscas aprender y te quedan dudas puedes consultarlo por este medio.

    CREATE TRIGGER dbo.TriggerName
        ON dbo.Detalle_Alquiler
        AFTER UPDATE
    AS
    BEGIN
        UPDATE a SET a.estado = 1
        FROM inserted i INNER JOIN Alquiler a ON i.num_alq = a.num_alq
        WHERE NOT EXISTS
    	   (SELECT 1 FROM dbo.Detalle_Alquiler d WHERE d.estado = 0 AND i.num_alq = d.num_alq)
    	   AND a.estado = 0;
    
        IF @@ROWCOUNT > 0  PRINT 'El estado ha cambiado...';  
    END
    GO

    • Marcado como respuesta JorgeC78 miércoles, 29 de noviembre de 2017 21:03
    miércoles, 29 de noviembre de 2017 20:12