SQL не пустой вместо не NULL - PullRequest
       23

SQL не пустой вместо не NULL

11 голосов
/ 31 октября 2011

Я использую postgreSQL. У меня есть столбец, который:

NOT NULL

Однако, когда я хочу вставить строку с пустой строкой, например:

''

это не дает мне ошибки и принимает. Как проверить, что значение вставки должно быть not empty? (Ни пустой, ни нулевой)

PS: Мой столбец определен как:

"ads" character varying(60) NOT NULL

Ответы [ 2 ]

18 голосов
/ 31 октября 2011

Добавить ограничение к определению столбца.Например что-то вроде:

ads character varying(60) NOT NULL CHECK (ads <> '')

Подробнее см. http://www.postgresql.org/docs/current/static/ddl-constraints.html

7 голосов
/ 31 октября 2011

В текущей документации к PostgreSQL вы можете сделать следующее для достижения желаемого:

CREATE TABLE distributors (
    did    integer PRIMARY KEY DEFAULT nextval('serial'),
    name   varchar(40) NOT NULL CHECK (name <> '')
);

Из документации:

CHECK ( expression )

Предложение CHECK определяет выражение, создающее логический результат, которому должны удовлетворять новые или обновленные строки для успешного выполнения операции вставки или обновления.Выражения, имеющие значение TRUE или UNKNOWN, успешно выполняются.Если какая-либо строка операции вставки или обновления приводит к результату FALSE, возникает исключение ошибки, и вставка или обновление не изменяют базу данных.Проверочное ограничение, указанное как ограничение столбца, должно ссылаться только на значение этого столбца, в то время как выражение, появляющееся в ограничении таблицы, может ссылаться на несколько столбцов.

В настоящее время выражения CHECK не могут содержать подзапросов и ссылаться на переменные, кроме столбцовтекущий ряд.

...