CREATE SCHEMA

Создание новой схемы.

Обзор

CREATE SCHEMA schema_name [AUTHORIZATION username]
    [schema_element [ ... ]]

CREATE SCHEMA AUTHORIZATION rolename [schema_element [ ... ]]

CREATE SCHEMA IF NOT EXISTS schema_name [ AUTHORIZATION user_name ]

CREATE SCHEMA IF NOT EXISTS AUTHORIZATION user_name

Описание

Команда CREATE SCHEMA добавляет новую схему в текущую базу данных. Имя схемы должно отличаться от имён всех существующих схем в текущей базе данных.

Схема по сути является пространством имён: она содержит именованные объекты (таблицы, типы данных, функции и операторы), чьи имена могут повторяться с именами других объектов, находящихся в других схемах. Доступ к именованным объектам можно получить, указав имя схемы в качестве префикса перед именем объекта, либо установив путь поиска (search path), содержащий нужную схему.

(Опционально) CREATE SCHEMA может включать подкоманды для создания объектов внутри новой схемы. Эти подкоманды эквивалентны отдельным командам, выполняемым после создания схемы, за исключением того, что при использовании предложения AUTHORIZATION все создаваемые объекты будут принадлежать указанной роли.

Параметры

schema_name

  • Имя создаваемой схемы. Если опущено, в качестве имени схемы используется имя пользователя. Данное имя не может начинаться с pg_, поскольку такие имена зарезервированы для системных каталогов.

user_name

  • Имя роли, которая будет владельцем схемы. Если опущено, владельцем становится роль, выполняющая команду. Только суперпользователи могут создавать схемы на имя ролей, отличных от собственных.

schema_element

  • Оператор SQL, определяющий объект, который будет создан внутри схемы. В настоящее время в команде CREATE SCHEMA допускаются только следующие подкоманды: CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER и GRANT. После создания схемы другие типы объектов могут быть созданы отдельными командами. Примечание: база данных YMatrix не поддерживает триггеры.

IF NOT EXISTS

  • Если схема с таким именем уже существует, никакие действия не выполняются (за исключением уведомления). При использовании этой опции нельзя включать подкоманды schema_element.

Замечания

Для создания схемы пользователь должен обладать привилегией CREATE для текущей базы данных или быть суперпользователем.

Примеры

Создание схемы:

CREATE SCHEMA myschema;

Создание схемы для роли joe (эта схема также будет называться joe):

CREATE SCHEMA AUTHORIZATION joe;

Создание схемы с именем test, которой владеет пользователь joe, если схема с таким именем ещё не существует. (Это не влияет на наличие у joe уже существующей схемы.)

CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;

Совместимость

Стандарт SQL допускает использование предложения DEFAULT CHARACTER SET в команде CREATE SCHEMA, а также поддерживает больше типов подкоманд, чем те, которые в настоящее время поддерживаются в базе данных YMatrix.

Согласно стандарту SQL, подкоманды в CREATE SCHEMA могут располагаться в любом порядке. Текущая реализация базы данных YMatrix не обрабатывает все прямые ссылки в подкомандах; иногда может потребоваться переупорядочить подкоманды, чтобы избежать ссылок на ещё не объявленные объекты.

Согласно стандарту SQL, владельцем схемы всегда является владелец всех объектов в ней. База данных YMatrix позволяет схемам содержать объекты, владельцами которых являются пользователи, отличные от владельца схемы. Это возможно только в случае, если владелец схемы предоставил другим пользователям привилегию CREATE для этой схемы, либо если суперпользователь решил создать объект в этой схеме.

Опция IF NOT EXISTS является расширением базы данных YMatrix.

См. также

ALTER SCHEMA, DROP SCHEMA