Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Ограничения типа CHECK

Ограничения типа CHECK (проверочные ограничения) позволяют выполнять операции сравнения, чтобы определить, соответствуют ли значения определенным заданным условиям. Синтаксис ограничений типа CHECK очень похож на общий синтаксис ограничений.

CONSTRAIN [имя ограничения] CHECK (условия_поиска) [откладыванию_ограничения] [время_ откладывания]

С другими элементами этого ограничения мы познакомимся в этом разделе. условия поиска

Параметр определяет с помощью одного или нескольких выражений и предиката одно или несколько условий поиска, которые накладывают ограничения на значения, вставляемые в столбец или таблицу. Для столбца можно указать несколько условий поиска с помощью операторов AND и OR. (Вспомните предложение WHERE.)

Считается, что значение удовлетворяет ограничению чипа CHECK, если результатом проверки условий поиска является значение TRUE или UNKNOWN. Ограничения типа CHECK используют только булевы операторы (например, =, >=, <= или <>), хотя они могут включать любые предикаты SQL 2003, например IN или LIKE. Ограничения типа CHECK можно соединять друг с другом (при проверке одного столбца) с помощью операторов AND и OR. Вот еще несколько правил, касающихся ограничений типа CHECK.

Столбец или таблица могут включать одно или несколько ограничений типа

Условия поиска не могут содержать агрегатные функции, исключением является их использование в подзапросе.

В условиях поиска нельзя использовать недетерминированные функции и подзапросы.

Ограничение типа CHECK может ссылаться только на идентичные объекты. Поэтому, если ограничение объявлено в глобальной временной таблице, оно не может ссылаться на постоянную таблицу.

В условиях поиска нельзя ссылаться на следующие функции ANSI: CURRENT_USER, SESSION USER, SYSTEMUSER, USER, CURRENT_PATH, CURRENT_DAТЕ, CURRENT_DATE, CURRENTMESTAMP, LOCALTIME и LOCALT1MESTAMP.

CHECK.

В следующем примере в столбцы dist_id и zip добавляется проверочное ограничение. (В этом примере используется общий код, работающий на SQL Server.) ZIP код должен соответствовать типичным диапазонам почтовых ZIP кодов, а значения столбца distid могут содержать или четыре буквенных символа, или два буквенных и два числовых символа.

Создание ограничений CHECK уровня столбца CREATE TABLE distributors (dist_id CHAR(4)

CONSTRAINT pk_dist_id PRIMARY KEY CONSTRAINT ck_dist_id CHECK

(dist_id LIKE ‘[A-Z] [A-Z] [A-Z] [A-Z]’ OR dist_id LIKE ‘[A-Z] [A-Z] [0-9] [0-9]’), dist_name VARCHAR(40)

dist_addressl VARCHAR(40), dist_address2 VARCHAR(40), city VARCHAR(20).

state CHAR(2) CONSTRAINT def_st DEFAULT (‘CA’), zip CHAR(5)

CONSTRAINT unq_dist_zip UNIQUE CONSTRAINT ck_dist_zip CHECK

(zip LIKE ‘[0-9] [0-9] [0-9] [0-9] [0-9]’), phone CHAR(12), sales_rep INT

NOT NULL DEFAULT USER REFERENCES employee(emp_id))

Источник