Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/02/2010, 10:45
jesusjj
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Timeout al crear Procedimiento Almacenado en local

Buenas tardes:

No he podido probar lo que me aconsejaron, pero esta tarde quiero dedicarle un rato.

Antes de nada, voy a comentar cómo está montado hasta ahora, porque encaja en la 'definición' que propuesta.

Para el alta de presupuestos, se utilizan tres tablas:

1- Cabecera, que recoge el idCliente (asociado a la tabla de clientes), la fecha de alta del presupuesto y el autonumérico para el idPresupuesto.

2- Temporal, recoge los datos registrados, mientras se define el presupuesto. En esta se registra la referencia, el detalle o descripción, la cantidad, el precio unitario y el impuesto (porcentaje), así como el idDetalle, para el control y posible edición o borrado de línea.

3- Por último, está la de detalle, que es donde se vuelca la anterior. Tiene los mismo campos, pero además incluye el idPresupuesto y no recuerdo si añadí el idCliente.

Lo único que no termino de entender es la parte:
Cita:
Si los valores de subitem recibidos no vienen de la tabla origen, entonces hay que poner un TRIGGER similar a este:

Código MySQL:
Ver original
  1. CREATE TRIGGER SET_SUBITEM_PRESUPUESTOS BEFORE INSERT
  2. ON  LM_detallePresupuesto
  3.         IF(SELECT MAX(SUBITEM) FROM  LM_detallePresupuesto WHERE idPresupuesto=NEW.idPresupuesto) IS NULL THEN
  4.       SET NEW.SUBITEM = 1;
  5.     ELSE
  6.       SET NEW.SUBITEM = (SELECT MAX(SUBITEM) FROM  LM_detallePresupuesto WHERE idPresupuesto=NEW.idPresupuesto) + 1;
  7.     END IF;
  8. END$$
  9.  
  10. DELIMITER ;
  11. Obviamente, este script hace referencia a un campo "SUBITEM" que debería existir, o llamarse de otra forma.
El concepto de 'subitem', supongo que será una especie de variable contandor para cada línea del bucle. Pero no entiendo exactamente el:
Cita:
Si los valores de subitem recibidos no vienen de la tabla origen,
A qué te refieres con no vienen de la tabla origen.

Muchas gracias por todo y esta tarde a ver qué progresos hago. También quiero meterlo en un trans commit o rollback, para evitar desastres ante posibles cortes de conexión en pleno registro

Un saludo.