Здесь Schema_name — имя, по которому схема идентифицируется в данной БД.
AUTHORIZATION owner_name указывает имя участника уровня БД, который является владельцем схемы. Этому участнику могут принадлежать и другие схемы, при этом текущая схема может не использоваться по умолчанию.
Table_definition указывает инструкцию CREATE TABLE, которая создает таблицу внутри схемы. У участника, выполняющего эту инструкцию, должно быть разрешение CREATE TABLE в текущей БД.
View_definition указывает инструкцию CREATE VIEW, которая создает представление внутри схемы. У участника, выполняющего эту инструкцию, должно быть разрешение CREATE VIEW в текущей БД.
Grant_statement указывает инструкцию GRANT, которая предоставляет разрешения на любой защищаемый объект, за исключением новой схемы.
Revoke_statement указывает инструкцию REVOKE, которая отменяет разрешения на любой защищаемый объект, за исключением новой схемы.
Deny_statement указывает инструкцию DENY, которая запрещает разрешения на любой защищаемый объект, за исключением новой схемы.
Инструкция CREATE SCHEMA создает схему, содержащиеся в ней таблицы и представления, а также разрешения GRANT, REVOKE или DENY на любой защищаемый объект в одной инструкции. Эта инструкция должна выполняться как отдельный пакет. С помощью инструкции CREATE SCHEMA объекты создаются внутри создаваемой схемы.
Транзакции CREATE SCHEMA являются атомарными. Если в процессе выполнения инструкции CREATE SCHEMA возникают ошибки, ни один из указанных защищаемых объектов не создается и ни одно разрешение не предоставляется.
Защищаемые объекты, которые необходимо создать с помощью инструкции CREATE SCHEMA, могут быть перечислены в любом порядке, за исключением представлений, ссылающихся на другие представления. В этом случае ссылающееся представление должно быть создано после того представления, на которое оно ссылается.
Таким образом, с помощью инструкции GRANT можно предоставлять разрешения на объект еще до того, как он будет создан, а инструкция CREATE VIEW может появляться раньше инструкций CREATE TABLE, создающих таблицы, на которые ссылается представление. Кроме того, инструкции CREATE TABLE могут декларировать внешние ключи к таблицам, определенным позже в инструкции CREATE SCHEMA.
В инструкциях CREATE SCHEMA поддерживаются DENY и REVOKE. Предложения DENY и REVOKE будут исполняться в той последовательности, в которой они появляются в инструкции CREATE SCHEMA.
Участник, выполняющий инструкцию CREATE SCHEMA, может указать другого участника БД в качестве владельца создаваемой схемы. Для этого необходимы дополнительные разрешения, описанные далее.
Новая схема принадлежит одному из следующих участников уровня БД: пользователю БД, роли БД или роли приложения. Владение объектами, содержащимися в схеме, можно передать любому участнику уровня БД, однако у владельца схемы всегда остается разрешение CONTROL на объекты в схеме.
Для того чтобы создать объект, указанный в инструкции CREATE SCHEMA, у пользователя должно быть соответствующее разрешение CREATE.
Чтобы назначить другого пользователя владельцем создаваемой схемы, у участника должно быть разрешение IMPERSONATE на этого пользователя. Если роль БД указана в качестве владельца, то вызывающий объект должен входить в роль или иметь на нее разрешение ALTER.
В следующем примере создается схема Sprockets, принадлежащая Annik, которая содержит таблицу NineProngs. Инструкция предоставляет разрешение SELECT для John и запрещает SELECT для Smith.
Схема, таблица и разрешения для разных пользователей создаются в одной инструкции.