Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/06/2013, 09:39
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con numeros negativos

Cita:
Que en lugar de actualizar la existencia a nÚmeros negativos me ingresa el numero mayor del rango de datos de tipo INT (2147483647).
Eso sólo puede ocurrir por desborde de representación, pero para saber la causa exacta necesitaríamos trazar el proceso y los valores que recibe, a fin de entender en qué punto estás cargando algo mal.
Ahor abien, cuando veo que dices esto:
Cita:
Manejo un procEdimiento que me va insertando en detalle de salidas
y un disparador que me debe actualizar la existencia en CATALOGO_PRODUCTOS cuando se realiza un insert en DETALLE_SALIDAS
me hace pensar que estás desarrollando algo innecesariamente.

Si usas un SP para realizar el INSERT en la tabla de detalles, acción que dispara un trigger a otra tabla, ¿por qué no metes ambas cosas en el SP en forma secuencial y no ejecutas todo el SP dentro de una transaction? Si usas tablas InnoDB, eso te aseguraría consistencia, y ´no fallaría.
Usar un trigger para una tarea que se puede hacer en un SP (donde sería mas correcto), es desperdiciar recursos y quitar capacidad de depuración.
Los triggers son difíciles de depurar.

Más allá de esto, el problema se produce por datos cuando no por cálculo. Por ejemplo: si fuese que si el valor entrante en el campo Cantidad es negativo, aplicaría la regla de signos ya conocida: 1 -(-1) = 2.
Código MySQL:
Ver original
  1. mysql> SELECT (1 - (-1)) RESULTADO;
  2. +-----------+
  3. | RESULTADO |
  4. +-----------+
  5. |         2 |
  6. +-----------+
  7. 1 row in set (0.00 sec)
Con datos en ese contexto, en lugar de restar, sumas, así que te puedes imaginar el resultado de la historia.
Por supuesto que sin conocer los datos, esto es una suposición...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)