Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Problema con trigger

Estas en el tema de Problema con trigger en el foro de PostgreSQL en Foros del Web. Buenas tardes Tengo un problemilla con un trigger que no me sale a ver si alguien puede iluminarme un poquillo. Sé que debe de ser ...
  #1 (permalink)  
Antiguo 22/06/2009, 09:49
 
Fecha de Ingreso: diciembre-2008
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Problema con trigger

Buenas tardes

Tengo un problemilla con un trigger que no me sale a ver si alguien puede iluminarme un poquillo. Sé que debe de ser una tonteria pero soy incapaz

Tengo una tabla con unos objetos (herramientas), y la cantidad de ellos que tengo

En otra, lo que apunto es la reserva del objeto, cuantas unidades y de qué fecha a qué fecha estarán alquilados.

Tengo creado un trigger para antes de realizar la reserva (antes de insertar) pero no funciona como debería

Ejemplo, pongamos que tengo 5 unidades del objeto A. Y hay una reserva de 2 unidades desde el día 1 al 3, y otra reserva de 2 unidades desde el día 4 al 6. Pues bien, si quiero hacer una reserva de 3 unidades desde el día 1 al 7 me debería dejar, pero no lo hace.

¿Alguna idea?

Muchas gracias!
  #2 (permalink)  
Antiguo 22/06/2009, 10:23
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema con trigger

Puedes poner el trigger?
Como comparas las fechas?
Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 22/06/2009, 12:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 5
Antigüedad: 15 años, 4 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';
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:30.