Как добавить ограничение «не пусто» для поля в таблице в базе данных MySQL?

Я использую сервер базы данных MySQL ** (версия сервера: 5.5.40-0ubuntu0.14.04.1-log — (Ubuntu)) **.

Там в одной таблице под названием 'users' в базе данных. В таблице 'users' есть одна колонка под названием 'full_name',

Ниже приведены ограничения на это

Name : full_name
Type : `varchar(255)`
Collation : `latin1_swedish_ci`
Attributes :
Null : No
Default : None
Extra :

Проблема, с которой я сталкиваюсь в этой колонке ('full_name') это кое-где из кода PHP пустой значение вставляется в этот столбец, хотя я добавил НЕНУЛЕВОЙ ограничение.

Я хочу избежать этой вещи из любой точки мира. То есть пустые / пустые / пробельные символы / NULL не должны вставляться в этот столбец. Я хочу сделать это из самой таблицы базы данных, а не вносить изменения в код PHP.

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

Еще одна вещь, есть несколько записей в этой таблице, которая содержит НОЛЬ значение в поле 'full_name', Я думаю, что эти ценности присутствовали до того, как я добавил НЕНУЛЕВОЙ ограничение на столбец 'full_name', Мое другое сомнение в том, являются ли они NULL значения, влияющие на столбец?

3

Решение

Вы можете добавить проверочное ограничение следующим образом:

full_name VARCHAR(45) CHECK (full_name <> '')

ОБНОВИТЬ:

Как @vhu указал :

CHECK () анализируется, но игнорируется как часть оператора CREATE.

Таким образом, вы должны добавить СПУСКОВОЙ КРЮЧОК перед ВСТАВИТЬ для тебя users Таблица.

Этот ТРИГГЕР будет называться до ВСТАВКА, и он проверит, если значение установить a пустой. Если это правда, a будет установлен в NULL:

CREATE TRIGGER `test_BINS` BEFORE INSERT ON `test` FOR EACH ROW
IF new.`a` = '' THEN SET new.`a` = NULL; END IF; END;

test это имя таблицы, test_BIN это имя ТРИГГЕР и a это имя одного столбца таблицы test,

Примечание. Этот код был создан MySQL Workbench.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]