Обязательное поле mysql - PullRequest
1 голос
/ 21 июня 2011

Как сделать это поле обязательным для заполнения?Вот что я имею в виду

У меня следующая структура таблицы mysql:

CREATE TABLE `new` (
  `id` int(11) DEFAULT NULL,
  `name` int(11) DEFAULT NULL,
  `phone` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Вот запрос без данных для телефона

insert into new values(1, 'm', '');

Но запрос работает нормально,Что нужно сделать, чтобы mysql вернул ошибку, если нет данных для поля телефона?Я могу сделать эту проверку по php, но мне интересно, как это сделать в mysql.

Ответы [ 4 ]

0 голосов
/ 21 июня 2011

'' как 3-й вариант не делает значение телефона нулевым. Он просто равен пустой строке, вот и все. если вы хотите увидеть ошибку, замените '' на NULL.

0 голосов
/ 21 июня 2011

Я не проверял это, но у меня есть ощущение '' != null. Что произойдет, если вы запустите

insert into new(id, name) values (1, 'test');

Бьюсь об заклад, вы получаете ошибку вставки ...

В любом случае, я думаю, что, вероятно, лучше проверять в PHP, чем ждать, пока вы доберетесь до базы данных ... вставки стоят дорого ...

0 голосов
/ 21 июня 2011

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

В противном случае вам придется пропуститьтелефонный столбец по умолчанию, скажем, в php вы бы использовали пустой ($ phone)?нуль: $ телефон;или что-то в этом роде.

0 голосов
/ 21 июня 2011
INSERT INTO new VALUES(1,'m',NULL)

вызовет ошибку.
Если вы хотите проверить, является ли поле номера телефона пустой строкой,
вы можете использовать триггер в MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...