Check Constraints SQL Server

В этом учебном пособии вы узнаете, как использовать проверку ограничения в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

Проверка ограничения в SQL Server (Transact-SQL) позволяет указать условие для каждой строки таблицы.

Примечание

  • Проверка ограничения НЕ может быть определена в представлении SQL Server.
  • Проверка ограничения, определенная в таблице, должна ссылаться только на столбцы в этой таблице. Она не может ссылаться на столбцы в других таблицах.
  • Проверка ограничения НЕ может включаться в подзапрос.
  • Проверку ограничения можно определить либо в операторе CREATE TABLE, либо в операторе ALTER TABLE.

Использование оператора CREATE TABLE

Синтаксис

Синтаксис создания проверки ограничения с использованием оператора CREATE TABLE в SQL Server (Transact-SQL):

CREATE TABLE table_name
(
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 для создания проверки ограничения.
Например:

В этом первом примере мы создали проверку ограничения check_employee_id в таблице employees. Это ограничение гарантирует, что поле employee_id содержит значения от 1 до 10000.

Давайте посмотрим на другой пример.

В этом втором примере мы создали проверку ограничения check_salary в таблице employees. Это ограничение гарантирует, что значение salary (зарплаты) больше 0.

Использование оператора ALTER TABLE

Синтаксис создания проверки ограничения в выражении ALTER TABLE в SQL Server (Transact-SQL):

ALTER TABLE table_name
ADD CONSTRAINT constraint_name
CHECK (column_name condition);

table_name - имя таблицы, которую вы хотите создать, с проверкой ограничения.
constraint_name - наименование проверки ограничения.
column_name - столбец в таблице, к которому относится проверка ограничения.
condition - условие, которое должно быть выполнено для успешной проверки ограничения.

Пример

Рассмотрим пример использования оператора ALTER TABLE для создания проверки ограничения в SQL Server. Например:

В этом примере мы создали проверку ограничения в существующей таблице employees с именем check_last_name. Она гарантирует, что поле last_name содержит только следующие значения: Chen, Vasilos или Mary.

Удаление проверки ограничения

Синтаксис удаления проверки ограничения в SQL Server (Transact-SQL):

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

table_name - имя таблицы, из которой вы удаляете проверку ограничения.
constraint_name – наименование удаляемой проверки ограничения.

Пример

Рассмотрим пример того, как удалить проверку ограничения в SQL Server.
Например:

В этом примере SQL Server мы удаляем проверку ограничения в таблице employees с именем check_last_name.

Включение проверки ограничений

Синтаксис включения проверки ограничений в SQL Server (Transact-SQL):

ALTER TABLE table_name
WITH CHECK CHECK CONSTRAINT constraint_name;

table_name - имя таблицы в которой вы хотите включить проверку ограничений.
constraint_name – имя проверки ограничения для включения.

Пример

Рассмотрим пример того, как включить проверку ограничений в SQL Server.
Например:

В этом примере мы включаем ограничение проверки в таблице employees, называемой check_salary.

Отключение проверки ограничений

Синтаксис отключения проверки ограничений в SQL Server (Transact-SQL):

ALTER TABLE table_name
NOCHECK CONSTRAINT constraint_name;

table_name - имя таблицы, в которой вы хотите отключить проверку ограничений.
constraint_name – имя проверки ограничений для отключения.

Пример

Рассмотрим пример того, как отключить ограничение проверки в SQL Server.
Например:

В этом примере SQL Server мы отключили проверку ограничений в таблице employees, называемую check_salary.