Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
TheAthlete
155 / 155 / 16
Регистрация: 31.08.2010
Сообщений: 540
1

Не могу понять, как работает not null

30.08.2016, 14:50. Просмотров 326. Ответов 1
Метки нет (Все метки)

Здравствуйте!
Подскажите пожалуйста, что делает конструкция NOT NULL при определении поля таблицы.
Сейчас обратил внимание, что когда создаешь таблицу с полями not null, то describe в колонке default пишет null, котя я указывал not null

Вот пример:

> create table t (name text not null, country char(2) not null);
> desc t;
+---------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| name | text | NO | | NULL | |
| country | char(2) | NO | | NULL | |
+---------+---------+------+-----+---------+-------+

> insert into t (name) values ('abc');
> insert into t (country) values ('ru');
> select * from t;
+------+---------+
| name | country |
+------+---------+
| abc | |
| | ru |
+------+---------+
2 rows in set (0.00 sec)
Т.е. получается задаешь not null, а оно позволяет не задавать значения. Подскажите пожалуйста, в чем суть NOT NULL?

Добавлено через 17 минут
Разобрался!
Суть в том, что SQL Mode не был установлен в strict mode
для установки нужно выполнить следующую команду:

SQL
1
SET @@SQL_MODE = 'STRICT_ALL_TABLES';
для проверки:

SQL
1
SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
Далее, при добавлении только имени, или только страны, выдается ошибка
> insert into t (country) values ('ru');
ERROR 1364 (HY000): Field 'name' doesn't have a default value
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2016, 14:50
Ответы с готовыми решениями:

Не могу понять почему не работает mysql
Все работало отлично. Сейчас пишу курсовую по web-программированию, и в один...

не могу понять, почему форма не работает
Привет ЗНАТОКИ!!! Дело такое - Есть форма, в ней кнопка close, которая...

Не могу понять почему не работает простой запрос ошибка в логике
в бд две записи Array ( => Array ( => 52 ...

не могу понять как реализовать запрос
Здравствуйте, не могу понять как реализовать запрос. Итак, имеется таблица...

Не могу понять как правильно сделать объединение
Добрый день совсем недавно начал изучать join не могу сделать запрос. Сейчас я...

1
Meridian21
143 / 141 / 44
Регистрация: 16.12.2015
Сообщений: 594
Записей в блоге: 4
31.08.2016, 12:54 2
Параметр поля not null запрещает полю принимать значения null. В данном случае, можно добавить значение поля по умолчанию - default value. И таким образом при таком insert'e, значение по умолчанию подставится, но при updat'е значения на null будет ошибка.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2016, 12:54

Не работает NOT NULL
set sql_mode='STRICT_ALL_TABLES'; - задаю режим Создаю таблицу через...

Блин, для ЧЕГО НУЖНА Функция CREATE TABLE invoice( inv_id INT AUTO_INCREMENT NOT NULL , usr_id INT NOT NULL , prod_id INT NOT NULL , quantity INT NOT
Погуглив, так и не смог толком понять. Есть тут ГУРУ по mysql Которые могут...

Не могу понять запрос
Не могу разобрать следующий запрос: "SELECT id, name, position, in_filter,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru