Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/05/2009, 15:27
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: Autoincrement al tope

Cita:
Pero cuando estoy programando en PHP para insertar un registro, haciendo de cuenta que yo no estoy ni enterado que no se puede sumar el autoincrement, no me devuelve ningún error...
Estás poniendo, como dice un viejo refrán, "el caro delante del caballo". Lo que en realidad te está fallando es la lógica de diseño: Tienes que diseñar la tabla con el rango de valores adecuado. Si estás poniendo un campo numérico de menor tamaño de lo que en el uso se necesita, lo que falló fue el análisis, no la tabla. No es suficiente suponer que usarás un campo de determinado tamaño, tienes que prevenir el problema antes que se produzca: Si supones que usarás TINYINT, usas SMALLINT, si supones SMALLINT usas INT... La idea es planear para el peor escenario posible, porque se escenario se va a dar eventualmente, y cuando la base está en funcionamiento un cambio de estructura es desastroso.
Cita:
no me devuelve ningún error...
Como ya te lo indiqué, eso no es cierto, te devuelve un error. Puede que no lo estés controlando debidamente, pero eso lo debes resolver con PHP...
Cita:
Por eso pregunto si hay alguna sentencia de MySql para saber si el registro se ingresó correctamente a la base de datos o no.
Normalmente, cuando el dato no se ingresa, el valor devuelto en la ejecución de la sentencia es cero ó -1, por lo que no debería ser necesario otra validación. Pero eso sigue siendo un problema de PHP, no de SQL.
Por otro lado, el PHP en ese caso si te da recursos para saber que pasó. Solamente tienes que usarlos correctamente.

Finalmente, hago hincapié en esto: Si estás teniendo problemas de rango de representación, tu problema es de implementación de la tabla: Si estás seguro de NUNCA usar mas de 200 valores puedes usar TINYINT, pero usar en un autoincrement un SIGNED es un desperdicio de recursos, ya que el autoincrement NUNCA usará los valores negativos, con lo que estás desperdiciando la mitad del rango.
Usa los campos con rango que exceda siempre el máximo posible de representación a usar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 31/05/2009 a las 15:35