Ограничение CHECK сужает диапазон значений, который может быть помещен в столбец. Если вы определяете ограничение CHECK для одного столбца, оно допускает только определенные значения для этого столбца. Если вы определяете ограничение CHECK для таблицы, оно может ограничить значения в определенных столбцах на основе значений в других столбцах в строке.
CHECK состоит из выражения или условия, которое должно быть выполнено для каждой строки в таблице. Если выражение возвращает значение "истина", то операция выполнится успешно, иначе она будет прервана и СУБД выдаст ошибку.
Рассмотрим пример: представим, что у нас есть таблица "Employees", в которой есть столбец "Age", предназначенный для значения возраста каждого сотрудника. Мы хотим установить ограничение, чтобы значения в этом столбце не превышали 65 лет.
Для этого мы можем использовать ограничение CHECK следующим образом:
```
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Age INT CHECK (Age <= 65)
);
```
В этом примере мы определяем ограничение CHECK для столбца "Age" с помощью выражения "Age <= 65". Теперь СУБД будет контролировать каждое вставленное или измененное значение в этом столбце и прерывать операции, если значение превышает 65.
Ограничение CHECK может быть использовано для создания более сложных правил, используя операторы условий и логические связки. Рассмотрим дополнительный пример:
```
CREATE TABLE Sales (
SaleID INT PRIMARY KEY,
Product VARCHAR(50),
Quantity INT,
Price DECIMAL(10, 2),
TotalPrice DECIMAL(10, 2) CHECK (TotalPrice = Quantity * Price AND TotalPrice > 0)
);
```
В данном случае мы определяем ограничение CHECK для столбца "TotalPrice", используя выражение "TotalPrice = Quantity * Price AND TotalPrice > 0". Это означает, что СУБД будет проверять, что значение в столбце "TotalPrice" равно произведению значений в столбцах "Quantity" и "Price", и в то же время больше нуля.
Такое ограничение может быть полезно, чтобы гарантировать правильность расчетов стоимости каждой отдельной продажи.
В заключение, ограничение CHECK позволяет нам контролировать значения, вставляемые или изменяемые в столбцах таблицы. Оно предоставляет возможность создавать различные условия и проверять их перед выполнением операций. Это мощный инструмент для обеспечения целостности данных и предотвращения ошибок.