Введение в стандарты языка баз данных 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.

Пояснения:

  • Если атрибуты ограничения не специфицированы, то неявно предполагается наличие атрибута INITIALLYIMMEDIATENOTDEFERRABLE.
  • Если не специфицировано определение имени ограничения, то неявно предполагается наличие определения имени ограничения с именем, зависящим от реализации.
  • Ограничение уникальности определяется следующими синтаксическими правилами:

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

    Пояснения:

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



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