Объяснение определения MySQL int - PullRequest
3 голосов
/ 02 декабря 2010

В течение многих лет я предполагал, что при создании нового столбца типа bigint (12) для таблицы MySQL поле ограничивается целыми числами до 12 цифр.Однако недавно я заметил, что значения до 16 цифр могут быть записаны и выбраны из определенного столбца bigint (12) без каких-либо предупреждений или проблем.

Может кто-нибудь помочь мне понять, почему это так?случай и что на самом деле означает это определение столбца?Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 02 декабря 2010

bigint (12) вообще не усекается. 12 используется для отображения.

Посмотрите на Числовые типы

Числовые атрибуты типа

MySQL поддерживает расширение для опционально указав дисплей ширина целочисленных типов данных в круглые скобки после базового ключевого слова для типа. Например, INT (4) указывает INT с шириной отображения из четырех цифр. Этот дополнительный дисплей ширина может использоваться приложениями для отображать целочисленные значения, имеющие ширину меньше ширины, указанной для столбец с левой стороны их с пространства. (То есть эта ширина присутствует в метаданных, возвращенных с наборы результатов. Используется ли он или нет до приложения.)

Ширина отображения не ограничивает диапазон значений, которые могут быть сохранены в колонке. И это не мешает значения шире отображения столбца ширина отображается правильно.

2 голосов
/ 02 декабря 2010

read Numeric Type Attributes section из документации MySql INT (4) определяет INT с шириной отображения четырех цифр

...