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

       

Средства определения и манипулирования схемой


Как и в SQL/89, в SQL/92 существует оператор определения схемы, с помощью которого можно за одно обращение к СУБД создать все необходимые объекты, связанные с указанным идентификатором авторизации. Этот оператор имеет следующий синтаксис:

<schema definition> ::= CREATE SCHEMA <schema name clause> [ <schema character set specification> ] [ <schema element>... ] <schema name clause> ::= <schema name> |AUTHORIZATION <schema authorization identifier> <schema name> AUTHORIZATION <schema authorization identifier> <schema authorization identifier> ::= <authorization identifier> <schema character set specification> ::= DEFAULT CHARACTER SET <character set specification> <schema element> ::= <domain definition> |<table definition> |<view definition> |<grant statement> |<assertion definition> |<character set definition> |<collation definition> |<translation definition>

Пояснения:

  • Если имя схемы не специфицировано, но неявно в качестве имени схемы используется идентификатор авторизации схемы.
  • Если в определении схемы отсутствует раздел AUTHORIZATION, то

      (a) если определение схемы содержится в модуле, то в качестве идентификатора авторизации схемы используется идентификатор авторизации модуля;

      (b) иначе, в качестве идентификатора авторизации схемы используется идентификатор авторизации SQL-сессии.

  • При выполнении оператора определения схемы создаются объекты, определяемые элементами схемы (базовые таблицы, представления, ограничения, домены, утверждения целостности, наборы символов, привилегии и т.д.), и их соответствующие описатели.
  • В отличие от SQL/89, (a) операторы, используемые для определения элементов схемы, можно использовать независимо, вне оператора определения схемы и (b) созданную ранее схему можно уничтожить. Для уничтожения схемы используется оператор DROPSCHEMA, определяемый следующим синтаксисом:

    <drop schema statement> ::= DROP SCHEMA <schema name> <drop behavior> <drop behavior> ::= CASCADE RESTRICT

    Пояснения:

  • Имя схемы должно идентифицировать существующую схему.
  • Если специфицировано RESTRICT, то к моменту выполнения оператора DROPSCHEMA схема не должна содержать какие бы то ни было объекты (постоянные базовые таблицы, глобальные временные таблицы, создаваемые локальные временные таблицы, представления и т.д.); эти объекты должны быть ранее уничтожены соответствующими индивидуальными операторами (см. п. 3.5.6).
  • Если специфицировано CASCADE, то такие объекты уничтожаются при выполнении оператора DROPSCHEMA путем неявного вызова соответствующих операторов.
  • При выполнении оператора DROPSCHEMA указанная схема и ее описание уничтожаются.


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