Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/01/2012, 10:19
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: Cambios de Datos involuntarios

Estás usando mal los tipos de dato.
El número que aparece en la definición de INT, no se usa para determinar la longitud de las cifras, sino para la justificación de la columna (el escribir los numeros a la derecha) en las consultas por consola. No tiene otros efectos.
La longitud o rango de representación de un número está dado por el tipo de dato, y si usas USIGNED son:
Cita:
- TINYINT: 0 a 255.
- SMALLINT: 0 a 65.535.
- MEDIUMINT: 0 a 16.777.215
- INT: 0 a 4.294.967.295.
- BIGINT: 0 a 18.446.744.073.709.551.615
Si observas, verás que un INT sólo puede representar un valor de hasta 10 dígitos, y no todos ellos.
Hay dos soluciones: Una correcta y otra incorrecta.
La correcta es usar un VARCHAR(14), ya que es la longitud mayor que puede tener un número, incluyendo prefijos.
La incorrecta es usar un BIGINT. ¿Por qué? Porque un numero telefónico tiene ceros al inicio en algunos casos, y un número no los tiene. El sistema los elimina.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)