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

       

Операторы определения и изменения определения домена


Эти операторы служат для определения домена, который в дальнейшем можно использовать для определения столбцов. Оператор определения (создания) домена имеет следующий синтаксис:

<domain definition> ::= C REATE DOMAIN <domain name> [ AS ] <data type> [ <default clause> ] [ <domain constraint>... ] [ <collate clause> ] <domain constraint> ::= [ <constraint name definition> ] <check constraint definition> [ <constraint attributes> ]

Синтаксис раздела умолчаний совпадает с синтаксисом раздела умолчаний в определении столбца (см. п. 3.5.1).

Пояснения:

  • Пусть D1 - некоторый домен. D1 используется в ограничении домена DC в том и только в том случае, когда условие поиска DC содержит либо имя D1, либо имя некоторого ограничения домена D2. Домен не может использоваться в своем собственном ограничении.
  • Для каждого ограничения домена

      (a) если атрибуты ограничения неспецифицированы, неявно полагаются указанными атрибуты INITIALLYIMMEDIATENOTDEFERRABLE.

      (b) если неспецифицировано имя ограничения, по умолчанию неявно предполагается указание имени ограничения, зависящего от реализации.

  • Пусть DSC обозначает условие поиска, входящее в ограничение домена DCD. Пусть D - имя этого домена, а T - имя некоторой таблицы со столбцом C, определенным на домене D. Пусть CSC обозначает копию DSC, в которой каждое вхождение VALUE заменено на C.
  • Ограничение DCD не удовлетворяется для C в том и только в том случае, когда истинно условие EXISTS (SELECT * FROMTWHERENOT (CSC)).
  • Оператор изменения определения домена определяется следующими синтаксическими правилами:

    <alter domain statement> ::= ALTER DOMAIN <domain name> <alter domain action> <alter domain action> ::= <set domain default clause> |<drop domain default clause> |<add domain constraint definition> |<drop domain constraint definition>

    Пояснение:

    В результате выполнения оператора ALTERDOMAIN описание существующего домена изменяется в соответствии со специфицированным действием.

    Раздел установки значения по умолчанию имеет следующий синтаксис:


    <set domain default clause> ::= SET <default clause>

    В результате в описатель домена заносится указанное значение по умолчанию (синтаксис раздела умолчания см. в п. 3.5.1).

    Раздел уничтожения значения по умолчанию имеет следующий синтаксис:

    <drop domain default clause> ::= DROP DEFAULT

    Пояснения:

  • Описатель соответствующего домена должен содержать значение по умолчанию.
  • Пусть C обозначает множество столбцов, определенных на данном домене.
  • Для каждого столбца из C, если в его описателе не содержится значение по умолчанию, в него помещается значение по умолчанию из описателя домена.
  • Из описателя домена значение по умолчанию удаляется.


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

    <add domain constraint definition> ::= ADD <domain constraint>

    Определение не требует пояснений.

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

    <drop domain constraint definition> ::= DROP CONSTRAINT <constraint name>

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


    Содержание раздела