--****************************
--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
lunes, 26 de septiembre de 2011
[INF-272] PROYECTO : Triggers
[INF-272] PROYECTO : Indices y Sinonimos
--**************************** --INDICES*Y*SINONIMOS********* --**************************** --1.- CREAR UN INDICE PARA LOS CLIENTES SEGUN SU NIT CREATE INDEX IN_CLIENTE ON CLIENTES (NIT) --2.- CREAR UN INDICE PARA LAS MESAS SEGUN LA SALA Y EL ESTADO CREATE INDEX IN_MESAS ON MESAS (ESTADO,ID_SALA) --3.- CREAR UN SINONIMO PARA LOS PRODUCTOS CREATE SYNONYM ALIMENTO FOR PRODUCTOS SELECT * FROM ALIMENTO --4.- CREAR UN SINONIMO PARA VENTAS CREATE SYNONYM FACTURA FOR VENTAS SELECT * FROM FACTURA
[INF-272] PROYECTO : Reglas y checks
--****************************
--REGLAS Y CHECKS*************
--****************************
--1.- CREAR UN CHECK PARA LIMITAR CONTROLAR LOS ESTADOS QUE
--PUEDE TENER UNA MESA
--SOL CON CHECKS
CREATE TABLE MESAS(
id_mesa int not null,
obj_version int,
estado_bd bit,
nro_mesa int,
ubiacion_x int,
ubiacion_y int,
estado varchar(255),
id_sala int,
CHECK (ESTADO='NO DISPONIBLE' OR ESTADO='DISPONIBLE')
)
--SOL CON REGLAS
CREATE RULE REGLA1
AS
@ESTADO = 'NO DIPONIBLE' OR @ESTADO ='DISPONIBLE'
SP_BINDRULE REGLA1,'MESAS.ESTADO'
--2.- CREAR UNA REGLAS PARA CONTROLAR QUE LA FECHA DE PAGO
-- DE LOS CONTRATOS SEA ANTERIOR A LA FECHA ACTUAL
--SOL CON CHECKS
CREATE TABLE CONTRATOS2(
id_contrato int not null,
obj_version int,
estado_bd bit,
nro_contrato int,
fecha_pago datetime,
nro_personas int,
fecha_evento datetime,
hora_evento datetime,
lugar varchar (255),
tipo_servicio varchar (255),
monto_total numeric (19,2),
id_cliente int,
id_tarifa int,
id_orden int,
CHECK (FECHA_PAGO > GETDATE())
)
--SOL CON REGLAS
CREATE RULE REGLA2
AS
@FECHA_PAGO > GETDATE()
SP_BINDRULE REGLA2,'CONTRATOS.FECHA_PAGO'
Suscribirse a:
Comentarios (Atom)