MySQL Default Value Issue - PullRequest
       14

MySQL Default Value Issue

2 голосов
/ 21 сентября 2009

В MySQL значением по умолчанию для целочисленного поля является 0. Во время вставки значение для этого поля равно NULL, а NULL вставляется. Я делаю некоторые арифметические манипуляции, такие как сложение, умножение, деление, используя значение этого поля. Это приводит к ошибке, как NULL был вставлен. Как решить эту проблему? Не поддерживает ли БД значение по умолчанию для таких полей, как целое, десятичное (не может быть для строковых типов, поскольку NULL допустимо для строковых значений), если их значение вставки равно нулю. Если нет, то правильно ли иметь значения NULL для числовых типов?

По какой-то причине, когда у меня есть десятичное поле с NOT NULL и DEFAULT VALUE как 0, вставка завершается неудачно с сообщением об ошибке «Данные усечены для столбца« Column_Name »в строке 1».

Если я удаляю свойство NOT NULL, вставка завершается тем же сообщением, что и предупреждение.

Значение, которое вставляется в это десятичное поле, является результатом функции AVG () MySql

Действительно невежественны ...

В чем может быть причина?

Ответы [ 5 ]

4 голосов
/ 21 сентября 2009

NULL - правильное значение для любого столбца / типа mysql.

вы можете установить для столбца NOT NULL или вам нужно разрешить его на вашем языке сценариев, чтобы ноль не вставлялся.

3 голосов
/ 21 сентября 2009

Чтобы вставить значение по умолчанию, вам не нужно указывать никакое значение для столбца, даже NULL, потому что NULL - это конкретное значение.

3 голосов
/ 21 сентября 2009

Вы должны указать значение по умолчанию '0' для структуры таблицы при ее создании. Или вы можете изменить его, используя:

ALTER TABLE `TableName` CHANGE `FieldName `FieldName` INT( 11 ) NULL DEFAULT '0'

Надеюсь, это поможет.

3 голосов
/ 21 сентября 2009

Вы можете установить поле как NOT NULL, чтобы полностью избежать этой проблемы. Если значение NULL нежелательно, это то, что вы должны сделать. Когда столбец равен NOT NULL, вместо NULL.

вставляется значение по умолчанию для типа (0 для целых чисел).
1 голос
/ 21 сентября 2009

Если нет проблем с вычислением, которое вы делаете, измените определение столбца на NOT NULL DEFAULT 0, тогда у вас всегда будет правильное целое (или десятичное). Но вы должны помнить, чтобы изменить старые значения с нуля на 0.

...