Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Definisce un nuovo schema per il database corrente.
Privilegi richiesti
Di seguito sono riportati i privilegi richiesti per CREATE SCHEMA:
-
Superuser
-
Utenti con il privilegio CREATE SCHEMA
Sintassi
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 [ ... ] ]
Parametri
- IF NOT EXISTS
-
Clausola che indica che se lo schema specificato esiste già, il comando non deve apportare modifiche e deve restituire un messaggio che lo schema esiste, piuttosto che terminare con un errore.
Questa clausola è utile durante lo scripting, quindi lo script ha esito positivo se CREATE SCHEMA tenta di creare uno schema già esistente.
- schema_name
-
Nome del nuovo schema. Il nome dello schema non può essere
PUBLIC
. Per ulteriori informazioni sui nomi validi, consultare Nomi e identificatori.Nota
L'elenco di schemi nel parametro di configurazione search_path determina la precedenza degli oggetti con nome identico quando a cui viene fatto riferimento senza nome di schema.
- AUTHORIZATION
-
Clausola che concede la proprietà a un utente specificato.
- username
-
Nome del proprietario dello schema.
- schema_element
-
Definizione per uno o più oggetti da creare all'interno dello schema.
- QUOTA
-
La quantità massima di spazio su disco che lo schema specificato può utilizzare. Questo spazio è l'utilizzo del disco collettivo. Include tutte le tabelle permanenti, viste materializzate sotto lo schema specificato e copie duplicate di tutte le tabelle con distribuzione ALL su ciascun nodo di calcolo. La quota dello schema non tiene conto delle tabelle temporanee create come parte di uno spazio dei nomi temporaneo o di uno schema.
Per visualizzare le quote dello schema configurate, consultare SVV_SCHEMA_QUOTA_STATE.
Per visualizzare i record in cui le quote dello schema sono state superate, consultare STL_SCHEMA_QUOTA_VIOLATIONS.
Amazon Redshift converte il valore selezionato in megabyte. Il gigabyte è l'unità di misura predefinita quando non si specifica un valore.
Per impostare e modificare una quota dello schema, è necessario essere un utente con privilegi avanzati del database. Un utente che non è un utente con privilegi avanzati ma che dispone dell'autorizzazione CREATE SCHEMA può creare uno schema con una quota definita. Quando si crea uno schema senza definire una quota, lo schema ha una quota illimitata. Quando si imposta la quota al di sotto del valore corrente utilizzato dallo schema, Amazon Redshift non consente ulteriori operazioni di importazione finché non si libera spazio su disco. Un'istruzione DELETE elimina i dati da una tabella e lo spazio su disco viene liberato solo quando viene eseguita l'istruzione VACUUM.
Amazon Redshift controlla ogni transazione alla ricerca di violazioni delle quote prima di eseguire il commit della transazione. Amazon Redshift controlla le dimensioni (lo spazio su disco utilizzato da tutte le tabelle in uno schema) di ogni schema modificato rispetto alla quota impostata. Poiché il controllo di violazione di quota si verifica alla fine di una transazione, il limite di dimensioni può superare temporaneamente la quota all'interno di una transazione prima del commit. Quando una transazione supera la quota, Amazon Redshift interrompe la transazione, vieta le successive operazioni di importazione e ripristina tutte le modifiche fino a quando non si libera spazio su disco. A causa delle operazioni VACUUM e pulizia interna che avvengono in background, è possibile che uno schema non sia pieno nel momento in cui si controlla lo schema dopo una transazione interrotta.
In via eccezionale, Amazon Redshift ignora la violazione della quota e in alcuni casi esegue il commit delle transazioni. Amazon Redshift esegue questa operazione per le transazioni che consistono esclusivamente in una o più delle seguenti istruzioni in cui non è presente un'istruzione di importazione INSERT o COPY nella stessa transazione:
-
DELETE
-
TRUNCATE
-
VACUUM
-
DROP TABLE
-
ALTER TABLE APPEND solo quando si spostano i dati dallo schema completo a un altro schema non completo
-
- SENZA LIMITI
-
Amazon Redshift non impone limiti alla crescita della dimensione totale dello schema.
Limiti
Amazon Redshift applica i seguenti limiti per gli schemi.
-
Un massimo di 9900 schemi per database.
Esempi
L'esempio seguente crea uno schema denominato US_SALES e assegna la proprietà all'utente DWUSER.
create schema us_sales authorization dwuser;
L'esempio seguente crea uno schema denominato US_SALES, assegna la proprietà all'utente DWUSER e imposta la quota su 50 GB.
create schema us_sales authorization dwuser QUOTA 50 GB;
Per visualizzare il nuovo schema, eseguire una query sulla tabella del catalogo PG_NAMESPACE come mostrato di seguito.
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)
L'esempio seguente crea lo schema US_SALES oppure non esegue nulla e restituisce un messaggio se lo schema esiste già.
create schema if not exists us_sales;