uz
DF
Daniil Fedorov
июля 8, 2025
Обновлено июля 8, 2025

CHECK Constraint

CHECK Constraint – это ограничение на уровне таблицы в PostgreSQL, которое гарантирует, что значения в определённом столбце или нескольких столбцах соответствуют заданному логическому условию. Оно помогает поддерживать целостность данных, предотвращая запись некорректных значений в базу.

Как работает CHECK Constraint?

Когда вставляются или обновляются данные, PostgreSQL проверяет, выполняется ли условие, указанное в ограничении CHECK. Если значение не соответствует этому условию, операция вставки (INSERT) или обновления (UPDATE) будет отклонена с ошибкой.

Синтаксис CHECK Constraint

Ограничение CHECK можно задать при создании таблицы:

CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
age INT CHECK (age >= 18),
salary DECIMAL(10,2) CHECK (salary > 0)
);

В этом примере:

  • age >= 18 – запрещает вставку сотрудников младше 18 лет.
  • salary > 0 – не допускает нулевые или отрицательные значения заработной платы.

Можно также добавить ограничение CHECK к существующей таблице:

ALTER TABLE employees ADD CONSTRAINT check_salary_positive CHECK (salary > 0);

Пример использования

Допустим, у нас есть таблица orders, в которой мы хотим ограничить значения столбца status определёнными вариантами:

CREATE TABLE orders (
id SERIAL PRIMARY KEY,
status TEXT CHECK (status IN ('pending', 'shipped', 'delivered', 'canceled'))
);

Теперь при попытке вставить или обновить статус на значение, не входящее в указанный список, PostgreSQL выдаст ошибку.

Преимущества CHECK Constraint

  • Гарантия целостности данных – Позволяет контролировать диапазон допустимых значений.
  • Гибкость – Можно задавать сложные логические условия.
  • Снижение ошибок на уровне базы – Исключает необходимость проверки данных только на уровне приложения.

Ограничения и особенности

  • CHECK не предотвращает NULL-значения, если явно не указано NOT NULL.
  • В отличие от FOREIGN KEY, не может ссылаться на другие таблицы.
  • Может повлиять на производительность при обработке больших объёмов данных, так как каждое изменение проверяется на соответствие условию.

Где найти больше информации?

В базе знаний Serverspace вы найдёте больше материалов по PostgreSQL, включая настройку индексов, управление транзакциями и оптимизацию производительности базы данных.