lunes, 26 de septiembre de 2011

[INF-272] PROYECTO : Triggers

--****************************
--TRIGGERS********************
--****************************

--1.- COMPROBAR LOS DATOS, VERIFICANDO QUE LA MESA EXISTA AL INSERTAR UNA NUEVA
--COMANDA
CREATE TRIGGER T1
ON PEDIDOS
INSTEAD OF INSERT
AS
BEGIN
    PRINT @@ROWCOUNT
    IF (EXISTS(SELECT * FROM INSERTED I, MESAS M
                WHERE M.ID_MESA=I.ID_MESA))
    BEGIN
        PRINT 'Adicionando'
        INSERT INTO PEDIDOS (ID_COMANDA,OBJ_VERSION,ESTADO_BD,
        NRO_PEDIDO,ESTADO,ID_MESA,ID_MESERO)
        SELECT ID_COMANDA,OBJ_VERSION,ESTADO_BD,
        NRO_PEDIDO,ESTADO,ID_MESA,ID_MESERO FROM INSERTED
    END   
    ELSE
    BEGIN
        PRINT 'NO EXITE MESA'
        ROLLBACK TRAN
    END   
END

--2.-COMPROBAR LOS DATOS, VERIFICANDO QUE EL CLIENTE ESTE REGISTRADO
--ANTES DE INSERTARLO EN EL CONTRATO 
CREATE TRIGGER T2
ON CONTRATOS
INSTEAD OF INSERT
AS
BEGIN
    PRINT @@ROWCOUNT
    IF(EXISTS (SELECT * FROM CLIENTES C, INSERTED I
                WHERE C.ID_CLIENTE = I.ID_CLIENTE))
    BEGIN
        PRINT 'ADICIONANDO'
        INSERT INTO CONTRATOS ( ID_CONTRATO,OBJ_VERSION,ESTADO_BD,
        NRO_CONTRATO, FECHA_PAGO, NRO_PERSONAS, FECHA_EVENTO,
        HORA_EVENTO,LUGAR,TIPO_SERVICIO, MONTO_TOTAL,ID_CLIENTE,
        ID_TARIFA, ID_ORDEN) SELECT ID_CONTRATO,OBJ_VERSION,ESTADO_BD,
        NRO_CONTRATO, FECHA_PAGO, NRO_PERSONAS, FECHA_EVENTO,
        HORA_EVENTO,LUGAR,TIPO_SERVICIO, MONTO_TOTAL,ID_CLIENTE,
        ID_TARIFA, ID_ORDEN FROM INSERTED
    END
    ELSE
    BEGIN
        PRINT 'NO EXISTE CLIENTE!!'
        PRINT 'REGISTRE AL NUEVO CLIENTE ANTES DE PROCEDER'
        ROLLBACK TRAN
    END
END

No hay comentarios:

Publicar un comentario