CREATE SCHEMA

Nom

CREATE SCHEMA -- définit un nouveau schéma

Synopsis

CREATE SCHEMA nom_schéma [ AUTHORIZATION nom_utilisateur ] [ élément_schéma [ ... ] ]
CREATE SCHEMA AUTHORIZATION nom_utilisateur [ élément_schéma [ ... ] ]

Description

CREATE SCHEMA crée un nouveau schéma dans la base de données en cours. Le nom du schéma doit être distinct du nom des différents schémas existants dans la base de données en cours.

Un schéma est essentiellement un tablespace : il contient des objets nommés (tables, types de données, fonctions et opérateurs) dont les noms pourraient être ceux d'autres objets existants dans d'autres schémas. Les noms d'objets sont accessible soit en << qualifiant >> leur noms avec le nom du schéma en préfixe ou en configurant un chemin de recherche qui inclut le(s) schéma(s) désiré(s). Une commande CREATE spécifiant un objet non qualifié crée l'objet dans le schéma actuel (celui qui se trouve au début du chemin de rechercher, qui peut être déterminé avec la fonction current_schema).

De façon optionnelle, CREATE SCHEMA peut inclure des sous-commandes pour créer des objets à l'intérieur du nouveau schéma. Les sous-commandes sont traitées essentiellement comme des commandes séparées lancées après la création du schéma, sauf que, si la clause AUTHORIZATION est utilisée, tous les objets créés seront possédés par cet utilisateur.

Paramètres

nom_schéma

Le nom d'un schéma à créer. Si il est oublié, le nom de l'utilisateur est utilisé comme nom de schéma. Le nom ne peut pas commencer avec pg_ car de tels noms sont réservés aux schémas du système.

nom_utilisateur

Le nom de l'utilisateur qui possédera le schéma. Si oublié, récupère par défaut l'utilisateur exécutant la commande. Seuls les superutilisateurs peuvent créer des schémas possédés par d'autres utilisateurs qu'eux-mêmes.

élément_schéma

Une instruction SQL définissant un objet à créer à l'intérieur du schéma. Actuellement, seules CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE TRIGGER et GRANT sont acceptées comme clauses à l'intérieur de CREATE SCHEMA. D'autres types d'objets peuvent être créés dans des commandes séparées une fois le schéma créé.

Notes

Pour créer un schéma, l'utilisateur appelant doit avoir le droit CREATE sur la base de données actuelle. (Bien sûr, les superutilisateurs n'ont pas besoin de cette vérification.)

Exemples

Créer un schéma :

CREATE SCHEMA mon_schema;

Créer un schéma pour l'utilisateur joe ; le schéma sera aussi nommé joe :

CREATE SCHEMA AUTHORIZATION joe;

Créer un schéma et lui ajouter une table et une vue :

CREATE SCHEMA hollywood
    CREATE TABLE films (titre text, sortie date, recompenses text[])
    CREATE VIEW gagnants AS
        SELECT titre, sortie FROM films WHERE recompenses IS NOT NULL;

Notez que les sous-commandes individuelles ne se terminent pas avec des points-virgules.

Ce qui suit est une façon équivalente d'accomplir la même chose :

CREATE SCHEMA hollywood;
CREATE TABLE hollywood.films (titre text, sortie date, recompenses text[]);
CREATE VIEW hollywood.gagnants AS
    SELECT titre, sortie FROM hollywood.films WHERE recompenses IS NOT NULL;

Compatibilité

Le standard SQL autorise une clause DEFAULT CHARACTER SET dans CREATE SCHEMA, ainsi que plus de types de sous-commandes qui ce qui est actuellement accepté par PostgreSQL.

Le standard SQL spécifie que les sous-commandes dans CREATE SCHEMA peuvent apparaître dans n'importe quel ordre. L'implémentation actuelle de PostgreSQL ne gère pas tous les cas de références dans les sous-commandes ; il pourrait être nécessaire de réordonner les sous-commandes pour éviter certaines références.

Suivant le standard SQL, le propriétaire d'un schéma possède toujours des objets. PostgreSQL permet aux schémas de contenir des objets possédés par d'autres utilisateurs que le propriétaire du schéma. Ceci peut arriver seulement si le propriétaire du schéma donne le privilège CREATE de son schéma à d'autres personnes.

Voir aussi

ALTER SCHEMA, DROP SCHEMA