ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ




Синтаксис ограничений стандарта SQL


Понятие ограничения используется во многих операторах определения данных (DDL).

Ограничение check::=

CHECK Предикат

Ограничения таблицы ::=

[CONSTRAINT Имя ограничения]

{

{PRIMARY KEY (Имя столбца.,..)}

| {UNIQUE (Имя столбца.,..)}

| {FOREIGN KEY (Имя столбца.,..) REFERENCES Имя таблицы [(Имя столбца.,..)] [Ссылочная спецификация]}

| { Ограничение check }

}

[Атрибуты ограничения]

Ограничения столбца::=

[CONSTRAINT Имя ограничения]

{

{NOT NULL}

| {PRIMARY KEY}

| {UNIQUE}

| {REFERENCES Имя таблицы [(Имя столбца)] [Ссылочная спецификация]}

| { Ограничение check }

}

[Атрибуты ограничения]

Ссылочная спецификация::=

[MATCH {FULL | PARTIAL}]

[ON UPDATE {CASCADE | SET NULL | SET DEFAULT | NO ACTION}]

[ON DELETE {CASCADE | SET NULL | SET DEFAULT | NO ACTION}]

Атрибуты ограничения::=

{DEFERRABLE [INITIALLY DEFERRED | INITIALLY IMMEDIATE]}

| {NOT DEFERRABLE}

Ограничение типа CHECK. Ограничение типа CHECK содержит предикат, могущий принимать значения TRUE, FALSE и UNKNOWN (NULL). Примеры предикатов различного вида приведены в главе 5. Ограничение типа CHECK может быть использовано как часть описания домена, таблицы, столбца таблицы или отдельного ограничения целостности - ASSERTION. Ограничение считается нарушенным, если предикат ограничения принимает значение FALSE.

Пример 15. Пример ограничения типа CHECK:

CHECK (Salespeaple.Salary IS NOT NULL) OR (Salespeaple.Commission IS NOT NULL)

Данное ограничение утверждает, что каждый продавец должен иметь либо ненулевую зарплату, либо ненулевые комиссионные.

Пример 16. Еще пример ограничения типа CHECK:

CHECK EXIST(SELECT * FROM Salespeaple)

Данное ограничение утверждает, что список продавцов не может быть пустым.

Ограничения таблицы и ограничения столбца. Ограничения таблицы и ограничения столбца таблицы входят как часть описания соответственно таблицы или столбца таблицы. Ограничение таблицы может относиться к нескольким столбцам таблицы. Ограничение столбца относится только к одному столбцу таблицы.


Содержание  Назад  Вперед