TGViewer
Data Science. SQL hub Data Science. SQL hub @sqlhub · 36K subscribers
Post #519 2.98K
🖥 Ограничение CHECK в SQL

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

Например:

CREATE TABLE Orders (
order_id INT PRIMARY KEY,
amount INT CHECK (amount > 0)
);


Здесь столбец amount принимает значения только больше 0, это является условием для проверки. Теперь давайте попробуем вставить данные в таблицу Orders.

Пример №1

-- Вставляем значение 100.
-- Данные добавлены
INSERT INTO Orders(amount) VALUES(100);


Пример №2

-- Вставляем значение -5.
-- Ошибка при добавлении данных
INSERT INTO Orders(amount) VALUES(-5);

Примечание: Ограничение CHECK используется для проверки данных только при вставке. Чтобы проверить, существует ли строка, следует использовать оператор EXISTS.

❗️Создать именованное ограничение CHECK

Популярной практикой является создание именованных ограничений, чтобы их было легче изменять и удалять.

Например:

-- Создаем именнованое ограничение amountCK для столбца amount.
-- Ограничение проверяет, чтобы значение для вставки было больше 0
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
amount INT,
CONSTRAINT amountCK CHECK (amount > 0)
);

❗️Ограничение CHECK в существующей таблице

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

Например:

-- Добавляем неименованное ограничение CHECK
ALTER TABLE Orders
ADD CHECK (amount > 0);


Также можно добавить и именованное ограничение CHECK:

-- Добавляем именованное ограничение CHECK - amountCK
ALTER TABLE Orders
ADD CONSTRAINT amountCK CHECK (amount > 0);


Примечание: Если мы попытаемся добавить ограничение amount > 0 к столбцу, значение которого уже меньше 0, мы получим ошибку.

❗️Удалить ограничение CHECK

Мы можем удалить ограничение CHECK, используя оператор DROP.

Например:

SQL Server, PostgreSQL, Oracle

-- Удаляем ограничение CHECK - amountCK
ALTER TABLE Orders
DROP CONSTRAINT amountCK;


MySQL

-- Удаляем ограничение CHECK - amountCK
ALTER TABLE Orders
DROP CHECK amountCK;
  • ❤ 11
  • 👍 2
  • 🔥 2
More from @sqlhub
  1. Oct 7, 2026🌍 SQL-задача: ближайшие точки на замкнутой карте Карта 100 × 100: противоположные края со…
  2. Oct 7, 2026ИИ-агент, который только отвечает на вопросы, — это уже прошлый этап. Следующий шаг — науч…
  3. Oct 6, 2026⚡️ SQL с подвохом: NULL в пустом списке Что выведет PostgreSQL? SELECT NULL IN (SELECT 1 W…
  4. Oct 3, 2026DOOM запустили внутри SQL-базы. Каждый кадр теперь результат запроса 🤯 Лукас Фогель собра…
  5. Oct 3, 2026Из аналитика в дата-инженеры: переход реален? 🤔 В последнее время все чаще дата-инженерия…
  6. Oct 2, 2026🧠 TIL: SQLite превращает числа в текст сразу по две цифры Обычно integer → string делают…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →