Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/06/2009, 12:19
disfrutadelmomento
 
Fecha de Ingreso: diciembre-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con trigger

Copio lo que tengo y explico bien lo de las tablas porque si no a lo mejor no se entiende. Tengo una tabla, herramientas donde guardo las herramientas, el tipo y la cantidad de ellas que hay. Tengo una tabla, reserva, donde se anota el número de reserva, quien hace la reserva y las fechas. Y por último la tabla reservaherramientas en donde se guarda la herramienta reservada, la cantidad de ellas y el numero de reserva. Este trigger es para antes de insertar en la tabla reserva_herramientas. Necesito comprobar que se puede reservar en ese periodo de tiempo.

Además, seguro que hay una forma elegante de arreglar la repetición de datos al combinar dos tablas y evitarme el dividir entre 2 al calcular el total

¿Alguna idea?


Cita:
CREATE OR REPLACE FUNCTION comprobar_disponibilidad() RETURNS TRIGGER AS'

DECLARE
tipo text;
cuantas int;
nombre text;
entrada date;
salida date;
id integer;
ocupadas integer;
disponibles integer;

BEGIN
id:=new.id_reserva;
nombre:=new.nombreherramienta;
cuantas:=new.cantidad;
tipo:=new.tipo_herramienta;

select fecha_llegada into entrada from reserva where id_reserva=id;
select fecha_salida into salida from reserva where id_reserva=id;

select cantidad into disponibles from herramientas where tipo_herramienta=tipo and nombreherramienta=nombre;

select sum(cantidad) into ocupadas from reserva_herramientas,reserva where tipo_herramienta=tipo and reserva.nombreherramienta=nombre and fecha_llegada>entrada and fecha_salida<salida;

IF ((ocupadas/2)+cuantas) > disponibles then
RAISE EXCEPTION ''No hay tantas herramientas libres en esas fechas'';
END IF;

RETURN new;
END;
'language 'plpgsql';