|
|
|
| При создании новой колонки таблицы, надо указывать NULL = YES или NO. А зачем это? Что дает NULL? Нужен он или нет? | |
|
|
|
|
|
|
|
для: AVS
(05.05.2008 в 00:02)
| | По умолчанию практически всегда NULL = YES.
Т.е. таким образом указывается разрешено ли в данном столбце таблицы полям не иметь значений. Если указать NULL = NO, то нужно также обязательно указать значение поля по умолчанию. | |
|
|
|
|
|
|
|
для: Axxil
(05.05.2008 в 00:10)
| | А если значение по умолчанию стоит NULL, то при попытке вставить значение в виде пустой строки (если там действительно должно быть пусто) появляется ошибка, что якобы некорректное значение. Получается надо в запросе на вставку вместо '' указывать NULL если default=NULL, а если default отличен от NULL тогда можно указать '' если надо вставить пустое значение (или значение по умолчанию)? | |
|
|
|
|
|
|
|
для: AVS
(05.05.2008 в 00:30)
| | Нет, это не из той оперы.
В данном случае это означает, что поле может иметь спец. значение NULL. Это влияет на результат агрегирующих функций. Обычно по умолчанию ставят NOT NULL. | |
|
|
|
|
|
|
|
для: Atheist
(05.05.2008 в 01:03)
| | Какие особенности при вставке данных в поле, которое по умолчанию NULL, надо учитывать? Так как уже я упоминал ситиацию: "если значение по умолчанию стоит NULL, то при попытке вставить значение в виде пустой строки (если там действительно должно быть пусто) появляется ошибка, что якобы некорректное значение." | |
|
|
|
|
|
|
|
для: AVS
(05.05.2008 в 07:35)
| | > Какие особенности при вставке данных в поле, которое по умолчанию NULL, надо учитывать?
Никаких особенностей нет. Если нужно вставить NULL, то так и пиши: INSERT INTO `tbl` VALUES(..., NULL, ...);
Нужно обычное - INSERT INTO `tbl` VALUES(..., 'string value', ...);
> если значение по умолчанию стоит NULL, то при попытке вставить значение в виде пустой строки (если там действительно должно быть пусто) появляется ошибка, что якобы некорректное значение
Я уже говорил - это из другой оперы. Очевидно, ты ситуацию с включенном режимом NO_AUTO_VALUE_ON_ZERO, когда для поля с AUTO_INCREMENT нельзя писать INSERT INTO `tbl` VALUES(0, ...), ибо возможна ситуация, когда 0 используется в качестве одного из идентификатов. Но это, как и написано в мануале, не рекомендуется. | |
|
|
|
|
|
|
|
для: Atheist
(05.05.2008 в 13:58)
| | Спасибо, помогли разобраться.
Прочитал про NULL здесь: http://www.mysql.ru/docs/man/Problems_with_NULL.html
Не так давно я пытался создать столбец типа TEXT и в качестве значения по умолчанию задать пустую строку (default '' ), но MySQL выдала ошибку, что невозможно задать этому столбцу значение по умолчанию. Я так понял что в таком случае при запросе INSERT всегда придется вручную прописывать '' для всех строк, если надо вставить пустую строку. Так ли это? | |
|
|
|
|
|
|
|
для: AVS
(05.05.2008 в 16:30)
| | > Я так понял что в таком случае при запросе INSERT всегда придется вручную прописывать '' для всех строк, если надо вставить пустую строку
Не обязательно. Например, если вставка происходит таким запросом: INSERT INTO `tbl` SET `field1` = 1, `field2` = 'string', ...
То можно и не указывать для полей с типом TEXT какое-то значение. При выборке будет возвращаться пустая строка.
Другое дело, что нельзя присвоить прооизвольное значение по умолчанию для типа TEXT, то есть оно есть (''), но поменять на что-то вроде 'abc' не выйдет. | |
|
|
|