6 de maio de 2014

PostgreSQL 9.3 - CREATE SCHEMA

CREATE SCHEMA

Nome
CREATE SCHEMA -- define um novo schema.
Sintaxe
CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] [ schema_element [ ... ] ]
CREATE SCHEMA AUTHORIZATION user_name [ schema_element [ ... ] ]

Descrição
CREATE SCHEMA cria um novo "schema" no banco de dados atual. O nome do "schema" deve ser distinto do nome de qualquer "schema" existente no banco de dados atual.
Um "schema" é essencialmente um espaço de nomes: contém objetos nomeados (tabelas, tipos de dados, funções e operadores), cujos nomes podem ser duplicados em relação aos de outros objetos existentes em outros "schemas". Objetos nomeados são acessados "qualificando" seus nomes de acordo com o nome do "schema" como prefixo, ou definindo um caminho de pesquisa que inclui o "schema" desejado.
Um comando CREATE especificando um nome de objeto não qualificado cria o objeto no "schema" corrente (aquele na frente do caminho de procura, que pode ser determinado com a função "current_schema").
Opcionalmente, CREATE SCHEMA pode incluir subcomandos para criar objetos dentro do novo esquema. Os subcomandos são tratados essencialmente como os mesmos que os comandos executados após a criação do esquema, exceto que, se a cláusula AUTHORIZATION for usada, todos os objetos criados será detida por esse usuário.
Parâmetros
schema_name: O nome de um "schema" a ser criado. Se for omitido, o "user_name" é usado como o nome do esquema. O nome não pode começar com "pg_", porque estes nomes são reservados para os esquemas do sistema.
user_name: O nome do papel do usuário que será o dono do novo "schema". Se omitido, o padrão é o usuário executador do comando. Para criar um "schema" de propriedade de um outro papel, você deve ser um membro direto ou indireto deste papel, ou ser um super-usuário.
schema_element: Uma instrução SQL que define um objeto a ser criado dentro do "schema". Atualmente, apenas CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER e GRANT são aceitos como cláusulas dentro do CREATE SCHEMA. Outros tipos de objetos podem ser criados em comandos separados após a criação do "schema".
IF NOT EXISTS: Não faz nada (exceto a emissão de um aviso prévio), se um "schema" com o mesmo nome já existe. subcomando "schema_element" não pode ser incluído quando essa opção for usada.
Notas
Para criar um "schema", o usuário de chamada deve ter o privilégio CREATE para o banco de dados atual. (É claro que os super-usuários ignoram esta verificação.)
Examplos
Cria um "schema":
CREATE SCHEMA myschema;
Criar um "schema" para o usuário joe; o "schema" também será chamado joe:
CREATE SCHEMA AUTHORIZATION joe;Criar um "schema" chamado "test" que será propriedade do usuário joe, a menos que já exista um "schema" chamado de "test". (Não importa se joe possui um "schema" pré-existente.)
CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;
Criar um "schema" e uma tabela, e ver o seu conteúdo:
CREATE SCHEMA hollywood
     CREATE TABLE films (title text, release date, awards text[])
     CREATE VIEW winners AS
          SELECT title, release FROM films WHERE awards IS NOT NULL;

Observe que os subcomandos individuais não terminam com ponto e vírgula. 
O que segue é uma forma equivalente para se obter o mesmo resultado:CREATE SCHEMA hollywood;
CREATE TABLE hollywood.films (title text, release date, awards text[]);
CREATE VIEW hollywood.winners AS
     SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL;
Compatibilidade
O padrão SQL permite que a cláusula DEFAULT CHARACTER SET em CREATE SCHEMA, bem como mais tipos de subcomandos do que são atualmente aceitos pelo PostgreSQL.
O padrão SQL especifica que os sub-comandos em CREATE SCHEMA podem aparecer em qualquer ordem. A implementação atual do PostgreSQL não trata todos os casos de referências à frente nos sub-comandos; ele pode por vezes ser necessário para reordenar os sub-comandos, a fim de evitar referências à frente.
De acordo com o padrão SQL, o proprietário de um "schema" sempre possui todos os objetos dentro dela. PostgreSQL permite que os "schemas" contenham objetos pertencentes a outros usuários além dos do proprietário do "schema". Isso só pode acontecer se o proprietário do "schema" conceder o privilégio CREATE para o seu "schema" para outra pessoa, ou um super-usuário escolhe para criar objetos nele.
A opção IF NOT EXISTS é uma extensão do PostgreSQL.

Atenção
A intensão deste post é dar suporte às citações de comandos existentes neste blog sobdemanda.blogspot.com, no idioma Português Brasil, não tendo em nenhuma hipótese o objetivo de substituiur qualquer documentação oficial existente para o SGBD PostgreSQL.
Fonte



0 comentários:

Postar um comentário