Он помогает базе сразу отбраковывать мусорные или аномальные значения, не дожидаясь ошибок в приложении или аналитике.
Пример: таблица заказов
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT NOT NULL,
total_amount DECIMAL(10,2) NOT NULL CHECK (total_amount >= 0),
status VARCHAR(20) NOT NULL CHECK (status IN ('new', 'pending', 'shipped'))
);
Попытка вставить некорректное значение:
INSERT INTO orders VALUES (1, 101, -500, 'new');
-- ERROR: check constraint violated
Можно добавлять бизнес-правила:
ALTER TABLE orders
ADD CONSTRAINT chk_min_total CHECK (total_amount >= 100);
Но если в таблице уже есть строки с total_amount < 100, СУБД выдаст ошибку.
🔥 Так что,
CHECK — это встроенный «охранник» базы, предотвращающий ошибки ещё до попадания данных в аналитику или отчёты.➡️ SQL Ready | #практика