Что такое ограничение NOT NULL?
Ограничение NOT NULL гарантирует, что столбец не может содержать нулевые значения, которые требуют, чтобы каждая строка в таблице имела ненулевое значение для этого конкретного столбца.
Требования к учебнику:
Чтобы следовать инструкциям, приведенным в этом посте, мы предполагаем, что у вас есть следующие требования:
- Установленный сервер PostgreSQL на вашем компьютере
- Базовые знания SQL
- Разрешение на создание объектов таблицы базы данных, таких как ограничения, функции и т. д.
Пример таблицы:
Давайте начнем с создания примера таблицы со столбцами, которые содержат ограничение не null. Возьмите следующий оператор создания таблицы, который устанавливает базовую таблицу, напоминающую таблицу wp_users в WordPress:
СОЗДАТЬ ТАБЛИЦУ wp_users (
ID СЕРИЙНЫЙ ПЕРВИЧНЫЙ КЛЮЧ,
user_login VARCHAR(60) НЕ NULL,
user_pass VARCHAR(255) НЕ NULL,
user_nicename VARCHAR(50) НЕ NULL,
user_email VARCHAR(100) НЕ NULL,
user_url VARCHAR(100),
user_registered TIMESTAMP NOT NULL DEFAULT current_timestamp,
user_activation_key VARCHAR(255),
user_status INT NOT NULL ПО УМОЛЧАНИЮ 0,
отображаемое_имя VARCHAR(250) НЕ NULL
);
Из данного запроса вы заметите, что большинство столбцов содержат ограничение NOT NULL.
Самый эффективный способ создания ограничения NOT NULL в данном столбце — во время создания таблицы. Это гарантирует, что все данные, добавляемые в таблицу, соответствуют правилам ограничения.
Однако если вы добавите ограничение в существующую таблицу, правила будут применяться только к данным, которые добавляются после ограничения, а не к каким-либо существующим данным. Это может привести к несоответствиям, особенно в больших таблицах.
Добавьте ограничение NOT NULL
В некоторых случаях может потребоваться добавить ограничение NOT NULL к существующей таблице. Например, вы можете использовать команду ALTER TABLE, за которой следует предложение ALTER COLUMN.
Синтаксис следующий:
ИЗМЕНИТЬ ТАБЛИЦУ table_nameALTER COLUMN имя_столбца SET NOT NULL;
Замените table_name на вашу целевую таблицу, а column_name на целевой столбец, к которому вы хотите применить ограничение.
Проверьте ограничение
Вы можете убедиться, что ограничение существует для данной таблицы, используя команду «\d» в утилите PSQL.
\d имя_таблицыПример:
sample_db=# \d wp_users;В результате получается следующее:
Удалить ограничение NOT NULL
Вы также можете удалить ограничение NOT NULL из данного столбца. Для этого мы можем использовать предложения ALTER TABLE и ALTER COLUMN следующим образом:
ИЗМЕНИТЬ ТАБЛИЦУ table_nameALTER COLUMN имя_столбца DROP NOT NULL;
Например, чтобы удалить ограничение NOT NULL из столбца user_url таблицы wp_users, мы можем выполнить следующий запрос:
ALTER TABLE wp_users ALTER COLUMN user_url DROP NOT NULL;Это должно удалить ограничение из таблицы.
Заключение
В этом руководстве мы рассмотрели, как мы можем работать с ограничением NOT NOLL в PostgreSQL. Мы также рассмотрели, как удалить существующее ограничение NOT NULL из заданного столбца.