CREATE SCHEMA nome_do_esquema [ AUTHORIZATION nome_do_usuário ] [ elemento_do_esquema [ ... ] ] CREATE SCHEMA AUTHORIZATION nome_do_usuário [ elemento_do_esquema [ ... ] ]
O comando CREATE SCHEMA cria um esquema no banco de dados corrente. O nome do esquema deve ser distinto do nome de todos os outros esquemas existentes no banco de dados corrente.
Um esquema é essencialmente um espaço de nomes: contém objetos nomeados (tabelas, tipos de dado, funções e operadores) cujos nomes podem ser iguais aos de outros objetos existentes em outros esquemas. Os objetos nomeados são acessados "qualificando" seus nomes usando o nome do esquema como prefixo, ou definindo um caminho de procura que inclua os esquemas desejados. Os objetos não qualificados são criados no esquema corrente (o primeiro do caminho de procura, que pode ser determinado pela função current_schema
[1]
).
Opcionalmente, o comando CREATE SCHEMA pode incluir subcomandos para criar objetos no novo esquema. Estes subcomandos são tratados, essencialmente, da mesma maneira como são tratados os comandos isolados executados após a criação do esquema, exceto que, se a cláusula AUTHORIZATION for usada, todos os objetos criados pertencerão a este usuário.
Para criar um esquema, o usuário deve possuir o privilégio CREATE no banco de dados corrente (É claro que os superusuários não são afetados por esta exigência).
Criar um esquema:
CREATE SCHEMA meu_esquema;
Criar um esquema para o usuário antonio; o esquema também se chamará antonio:
CREATE SCHEMA AUTHORIZATION antonio;
Criar um esquema e criar uma tabela e uma visão nele:
CREATE SCHEMA hollywood CREATE TABLE filmes (titulo text, lancamento date, premios text[]) CREATE VIEW premiados AS SELECT titulo, lancamento FROM filmes WHERE premios IS NOT NULL;
Deve ser observado que os subcomandos individuais não terminam por ponto-e-vírgula.
Abaixo está mostrada uma forma equivalente para se obter o mesmo resultado:
CREATE SCHEMA hollywood; CREATE TABLE hollywood.filmes (titulo text, lancamento date, premios text[]) CREATE VIEW hollywood.premiados AS SELECT titulo, lancamento FROM hollywood.filmes WHERE premios IS NOT NULL;
O padrão SQL permite a cláusula DEFAULT CHARACTER SET no comando CREATE SCHEMA, bem como mais tipos de subcomandos que os aceitos atualmente pelo PostgreSQL.
O padrão SQL especifica que os subcomandos presentes em CREATE SCHEMA podem estar em qualquer ordem. A implementação atual do PostgreSQL não trata todos os casos de referência à frente nos subcomandos; alguma vezes pode ser necessário reordenar os subcomandos para evitar referências à frente.
De acordo com o padrão SQL, o dono do esquema sempre possui todos os objetos que este contém. O PostgreSQL permite que os esquemas contenham objetos pertencentes a outros usuários. Isto só acontece quando o dono do esquema concede o privilégio CREATE em seu esquema para algum outro usuário.
[1] |
Use o comando SELECT current_schema(); (N. do T.) |