В этом учебном пособии вы узнаете, как использовать проверку ограничения в SQL Server (Transact-SQL) с синтаксисом и примерами.
Описание
Проверка ограничения в SQL Server (Transact-SQL) позволяет указать условие для каждой строки таблицы.
Примечание
- Проверка ограничения НЕ может быть определена в представлении SQL Server.
- Проверка ограничения, определенная в таблице, должна ссылаться только на столбцы в этой таблице. Она не может ссылаться на столбцы в других таблицах.
- Проверка ограничения НЕ может включаться в подзапрос.
- Проверку ограничения можно определить либо в операторе CREATE TABLE, либо в операторе ALTER TABLE.
Использование оператора CREATE TABLE
Синтаксис
Синтаксис создания проверки ограничения с использованием оператора CREATE TABLE в SQL Server (Transact-SQL):
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
CONSTRAINT constraint_name
CHECK [ NOT FOR REPLICATION ] (column_name condition)
);
Параметры или аргументы
table_name - имя таблицы, которую вы хотите создать, с проверкой ограничения.
constraint_name - наименование проверки ограничения.
column_name - столбец в таблице, к которому относится проверка ограничения.
condition - условие, которое должно быть выполнено для успешной проверки ограничения.
Пример
Рассмотрим пример использования оператора CREATE TABLE в SQL Server для создания проверки ограничения.
Например:
1 2 3 4 5 6 7 8 |
CREATE TABLE employees ( employee_id INT NOT NULL, last_name VARCHAR(50) NOT NULL, first_name VARCHAR(50), salary MONEY, CONSTRAINT check_employee_id CHECK (employee_id BETWEEN 1 and 10000) ); |
В этом первом примере мы создали проверку ограничения check_employee_id в таблице employees. Это ограничение гарантирует, что поле employee_id содержит значения от 1 до 10000.
Давайте посмотрим на другой пример.
1 2 3 4 5 6 7 8 |
CREATE TABLE employees ( employee_id INT NOT NULL, last_name VARCHAR(50) NOT NULL, first_name VARCHAR(50), salary MONEY, CONSTRAINT check_salary CHECK (salary > 0) ); |
В этом втором примере мы создали проверку ограничения check_salary в таблице employees. Это ограничение гарантирует, что значение salary (зарплаты) больше 0.
Использование оператора ALTER TABLE
Синтаксис создания проверки ограничения в выражении ALTER TABLE в SQL Server (Transact-SQL):
ADD CONSTRAINT constraint_name
CHECK (column_name condition);
table_name - имя таблицы, которую вы хотите создать, с проверкой ограничения.
constraint_name - наименование проверки ограничения.
column_name - столбец в таблице, к которому относится проверка ограничения.
condition - условие, которое должно быть выполнено для успешной проверки ограничения.
Пример
Рассмотрим пример использования оператора ALTER TABLE для создания проверки ограничения в SQL Server. Например:
1 2 3 |
ALTER TABLE employees ADD CONSTRAINT check_last_name CHECK (last_name IN ('Chen', 'Vasilos', 'Mary')); |
В этом примере мы создали проверку ограничения в существующей таблице employees с именем check_last_name. Она гарантирует, что поле last_name содержит только следующие значения: Chen, Vasilos или Mary.
Удаление проверки ограничения
Синтаксис удаления проверки ограничения в SQL Server (Transact-SQL):
DROP CONSTRAINT constraint_name;
table_name - имя таблицы, из которой вы удаляете проверку ограничения.
constraint_name – наименование удаляемой проверки ограничения.
Пример
Рассмотрим пример того, как удалить проверку ограничения в SQL Server.
Например:
1 2 |
ALTER TABLE employees DROP CONSTRAINT check_last_name; |
В этом примере SQL Server мы удаляем проверку ограничения в таблице employees с именем check_last_name.
Включение проверки ограничений
Синтаксис включения проверки ограничений в SQL Server (Transact-SQL):
WITH CHECK CHECK CONSTRAINT constraint_name;
table_name - имя таблицы в которой вы хотите включить проверку ограничений.
constraint_name – имя проверки ограничения для включения.
Пример
Рассмотрим пример того, как включить проверку ограничений в SQL Server.
Например:
1 2 |
ALTER TABLE employees WITH CHECK CHECK CONSTRAINT check_salary; |
В этом примере мы включаем ограничение проверки в таблице employees, называемой check_salary.
Отключение проверки ограничений
Синтаксис отключения проверки ограничений в SQL Server (Transact-SQL):
NOCHECK CONSTRAINT constraint_name;
table_name - имя таблицы, в которой вы хотите отключить проверку ограничений.
constraint_name – имя проверки ограничений для отключения.
Пример
Рассмотрим пример того, как отключить ограничение проверки в SQL Server.
Например:
1 2 |
ALTER TABLE employees NOCHECK CONSTRAINT check_salary; |
В этом примере SQL Server мы отключили проверку ограничений в таблице employees, называемую check_salary.