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';