Введение в стандарты языка баз данных SQL


Определение ограничений целостности


В стандарте SQL/92 специфицированы две разновидности ограничений целостности - привязанные к определению таблиц (табличные ограничения) и определяемые независимо (утверждения целостности - assertions). Табличные ограничения похожи на соответствующие средства SQL/89, но на самом деле существенно более развиты. Поэтому мы достаточно подробно рассмотрим эти механизмы. Аналогов утверждений целостности в языке SQL/89 не было.

Общие синтаксические правила определения табличных ограничений выглядят следующим образом:

<table constraint definition> ::= [ <constraint name definition> ] <table constraint> [ <constraint attributes> ] <table constraint> ::= <unique constraint definition> |<referential constraint definition> |<check constraint definition>

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

Пояснения:

  1. Если атрибуты ограничения не специфицированы, то неявно предполагается наличие атрибута INITIALLYIMMEDIATENOTDEFERRABLE.
  2. Если не специфицировано определение имени ограничения, то неявно предполагается наличие определения имени ограничения с именем, зависящим от реализации.

Ограничение уникальности определяется следующими синтаксическими правилами:

<unique constraint definition> ::= <unique specification> <left paren> <unique column list> <right paren> <unique specification> ::= UNIQUE | PRIMARY KEY <unique column list> ::= <column name list>

Пояснения:

  1. Пусть T обозначает таблицу, для которой определяется ограничение уникальности, а UCL - список столбцов уникальности.
  2. Если в спецификации уникальности содержится ключевое слово PRIMARYKEY, то пусть SC обозначает условие поиска UNIQUE (SELECTUCLFROMT) AND (UCL) ISNOTNULL
  3. Если в спецификации уникальности содержится ключевое слово UNIQUE, то пусть SC обозначает условие поиска UNIQUE (SELECTUCLFROMT)
  4. Определение таблицы должно содержать не более одного явного или неявного определения ограничения уникальности со спецификацией PRIMARYKEY.
  5. Ограничение уникальности не удовлетворяется в том и только в том случае, когда истинно условие EXISTS (SELECT * FROMTWHERENOT (SC))




- Начало -  - Назад -  - Вперед -