CREATE SCHEMA
Define um novo esquema para o banco de dados atual.
Privilégios obrigatórios
A seguir estão os privilégios obrigatórios para CREATE SCHEMA:
Superusuário
Usuários com o privilégio CREATE SCHEMA
Sintaxe
CREATE SCHEMA [ IF NOT EXISTS ] schema_name [ AUTHORIZATION username ] [ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] CREATE SCHEMA AUTHORIZATION username[ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] ]
Parâmetros
- IF NOT EXISTS
-
Cláusula que indica que, se o esquema especificado existe, o comando não deve fazer alterações e deve retornar uma mensagem informando que o esquema existe, em vez de encerrar com um erro.
Esta cláusula é útil para realizar scripting para que o script não falhe se o comando CREATE SCHEMA tentar criar um esquema que já existe.
- schema_name
-
Nome do novo esquema. O nome do esquema não pode ser
PUBLIC
. Para obter mais informações sobre nomes válidos, consulte Nomes e identificadores.nota
A lista de esquemas no parâmetro de configuração search_path determina a precedência de objetos com nomes idênticos quando forem mencionados sem os nomes dos esquemas.
- AUTHORIZATION
-
Cláusula que dá a propriedade a um usuário especificado.
- nome de usuário
-
Nome do proprietário do esquema.
- elemento_esquema
-
Definição de um ou mais objetos a serem criados no esquema.
- QUOTA
-
A quantidade máxima de espaço em disco que o esquema especificado pode usar. Esse espaço é o uso coletivo do disco. Ele inclui todas as tabelas permanentes, visões materializadas do esquema especificado e cópias duplicadas de todas as tabelas com distribuição ALL em cada nó de computação. A cota do esquema não contabiliza tabelas temporárias criadas como parte de um esquema ou namespace temporário.
Para exibir as cotas de esquema configuradas, consulte SVV_SCHEMA_QUOTA_STATE.
Para exibir os registros em que as cotas de esquema foram excedidas, consulte STL_SCHEMA_QUOTA_VIOLATIONS.
O Amazon Redshift converte o valor selecionado para megabytes. Gigabytes é a unidade de medida padrão quando um valor não é especificado.
Você deve ser um superusuário de banco de dados para definir e alterar uma cota de esquema. Um usuário que não seja um superusuário, mas que tenha permissão CREATE SCHEMA, poderá criar um esquema com uma cota definida. Quando você cria um esquema sem definir uma cota, o esquema assume uma cota ilimitada. Quando você define a cota abaixo do valor atual usado pelo esquema, o Amazon Redshift impede novas ingestões até liberar espaço em disco. Uma instrução DELETE exclui os dados de uma tabela e o espaço em disco é liberado somente quando VACUUM é executada.
O Amazon Redshift verifica cada transação em busca de violações de cota antes de confirmar a transação. O Amazon Redshift verifica o tamanho (o espaço em disco usado por todas as tabelas em um esquema) de cada esquema modificado em relação à cota definida. Como a verificação de violação de cota ocorre no final de uma transação, o limite de tamanho poderá exceder temporariamente a cota enquanto a transação não é confirmada. Quando uma transação excede a cota, o Amazon Redshift aborta a transação, proíbe ingestões subsequentes e reverte todas as alterações até você liberar espaço em disco. Devido à VACUUM em segundo plano e limpeza interna, é possível que um esquema não esteja cheio no momento da verificação após uma transação cancelada.
Como exceção, o Amazon Redshift desconsidera a violação da cota e confirma transações em determinados casos. O Amazon Redshift faz isso para transações que consistem apenas em uma ou mais das seguintes instruções, onde não houver uma instrução de consumo INSERT ou COPY na mesma transação:
-
DELETE
-
TRUNCATE
-
VACUUM
-
DESCARTAR TABELA
-
ALTER TABLE APPEND somente ao mover dados do esquema cheio para outro esquema não cheio
-
- UNLIMITED
-
O Amazon Redshift não impõe limite para o crescimento do tamanho total do esquema.
Limites
O Amazon Redshift aplica os limites a seguir a esquemas.
-
O máximo de esquemas permitido por banco de dados é 9.900.
Exemplos
O exemplo a seguir cria um esquema chamado US_SALES e dá sua propriedade ao usuário DWUSER.
create schema us_sales authorization dwuser;
O exemplo a seguir cria um esquema chamado US_SALES, dá sua propriedade ao usuário DWUSER e define a cota para 50 GB.
create schema us_sales authorization dwuser QUOTA 50 GB;
Para exibir o novo esquema, consulte a tabela de catálogo PG_NAMESPACE, conforme mostrado a seguir.
select nspname as schema, usename as owner from pg_namespace, pg_user where pg_namespace.nspowner = pg_user.usesysid and pg_user.usename ='dwuser'; schema | owner ----------+---------- us_sales | dwuser (1 row)
O exemplo a seguir cria o esquema US_SALES, ou não realiza ação nenhuma, e retorna uma mensagem se o esquema já existir.
create schema if not exists us_sales;