PostgreSQL - ограничение NOT NULL

Опубликовано: 30 Марта, 2022

Ограничение PostgreSQLNot-Null, как следует из названия, используется для обеспечения того, чтобы любое значение в соответствующем столбце не было нулевым. В мире баз данных NULL - это неизвестная или отсутствующая информация. Значение NULL отделено от пустой строки или нуля. Например, можно спросить у человека адрес электронной почты, если вы не знаете, вы можете использовать значение NULL для вставки его в столбец электронной почты. Это говорит о том, что данные на момент вставки неизвестны. Если у человека нет адреса электронной почты, его можно обновить до пустой строки.

The NULL value is remarkably special. For instance, NULL is not equal to any other NULL. To check if a value is NULL or not, one can use the Boolean operator IS NULL or IS NOT NULL. The expression NULL = NULL returns NULL.

PostgreSQL предоставляет ограничение not-null для реализации условий, что столбец не должен принимать значения NULL. Это означает, что всякий раз, когда вы вставляете или обновляете данные, вы должны указывать значение, которое не является нулевым.

 Синтаксис: имя_переменной Тип данных NOT NULL;

Теперь давайте рассмотрим пример, чтобы лучше понять концепцию NOT NULL.

Example:
First, we will create a table invoice with NOT NULL constraint as follows:

CREATE TABLE invoice(
  id serial PRIMARY KEY,
  product_id int NOT NULL,
  qty numeric NOT NULL CHECK(qty > 0),
  net_price numeric CHECK(net_price > 0) 
);

На этом этапе мы сначала вставим данные, удовлетворяющие вышеуказанному ограничению, следующим образом:

 ВСТАВИТЬ счет-фактуру (product_id, qty, net_price)
ЦЕННОСТИ
    ('1', '5', 255);

Теперь мы проверим, были ли данные успешно вставлены, используя следующую команду:

 ВЫБРАТЬ * ИЗ счета-фактуры;

Это приведет к следующему выводу:

Теперь мы попытаемся вставить значение NULL в таблицу счетов, как показано ниже:

 ВСТАВИТЬ счет-фактуру (product_id, qty, net_price)
ЦЕННОСТИ
    ('1', ПУСТО, 255);

Выход:

 ОШИБКА: нулевое значение в столбце «кол-во» нарушает ограничение на ненулевое значение.
ДЕТАЛИ: Неудачная строка содержит (2, 1, null, 255).

Мы можем наблюдать, как ограничение NOT NULL ведет себя так, как ожидалось.