CREATE VIEW

Nom

CREATE VIEW -- définit une nouvelle vue

Synopsis

CREATE [ OR REPLACE ] VIEW nom [ ( nom_colonne [, ...] ) ] AS requête

Description

CREATE VIEW définit une vue d'une requête. La vue n'est pas matérialisée physiquement. Au lieu de cela, la requête est lancée chaque fois qu'une vue est référencée dans une requête.

CREATE OR REPLACE VIEW est similaire mais elle est remplacée si une vue du même nom existe déjà. Vous pouvez seulement remplacer une vue avec une nouvelle requête qui génère un ensemble de colonnes identiques (par exemple le même nom de colonnes et de type de données).

Si un nom de schéma est donné (par exemple CREATE VIEW monschema.mavue ...), alors la vue est créée dans le schéma donné. Dans les autres cas, elle est créée dans le schéma courant. Le nom de la vue doit être différent du nom des autres vues, tables, séquences ou index du même schéma.

Paramètres

nom

Le nom de la vue à créer (qualifié ou non du nom du schéma).

nom de colonne

Une liste optionnelle de noms à utiliser pour les colonnes de la vue. Si elle n'est pas donnée, le nom des colonnes sera déduit de la requête.

requête

Une requête (c'est-à-dire une instruction SELECT) qui fournira les colonnes et les lignes de la vue.

Référez-vous à l'instruction SELECT pour plus d'informations sur les requêtes valides.

Notes

Actuellement, les vues sont en lecture seule : le système n'autorisera pas une insertion, une mise à jour ou une suppression sur la vue. Vous pouvez obtenir les effets d'une vue pouvant être mise à jour en créant des règles qui ré-écrivent les insertions, etc. sur la vue en actions appropriées sur les autres tables. Pour plus d'informations, regardez CREATE RULE.

Utilisez l'instruction DROP VIEW pour supprimer les vues.

Soyez attentif au fait que les noms et les types des colonnes de la vue soient affectés de la façon que vous souhaitez. Par exemple,

CREATE VIEW vista AS SELECT 'Hello World';

est doublement une mauvaise forme : le nom de la colonne sera par défaut ?column? et le type de données de la colonne sera par défaut unknown. Si vous voulez une chaîne de caractères dans le résultat de la vue, utilisez quelque chose comme

CREATE VIEW vista AS SELECT text 'Hello World' AS hello;

L'accès aux tables référencées dans la vue est déterminé par les droits du propriétaire de la vue. Cependant, les fonctions appelées dans la vue sont traitées de la même façon que si elles avaient été appelées directement par la requête utilisant la vue. Par conséquent, l'utilisateur de la vue doit avoir les droits sur toutes les fonctions utilisées par la vue.

Exemples

Créer une vue sur tous les films de comédie :

CREATE VIEW comedies AS
    SELECT *
    FROM films
    WHERE genre = 'Comédie';

Compatibilité

Le standard SQL spécifie quelques possibilités supplémentaires pour l'instruction CREATE VIEW :

CREATE VIEW nom [ ( nom_colonne [, ...] ) ]
    AS requête
    [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]

Les clauses optionnelles pour la commande SQL complète sont :

CHECK OPTION

Cette option est à utiliser avec les vues pouvant être mises à jour. Toutes les commandes INSERT et UPDATE sur la vue seront contrôlées pour s'assurer que les données sont conformes à la condition définissant la vue. (C'est-à-dire que les nouvelles données seraient visibles à travers la vue). Si cela n'est pas le cas, la mise à jour sera rejetée.

LOCAL

Contrôle l'intégrité sur la vue.

CASCADE

Contrôle l'intégrité sur cette vue et sur toutes les vues dépendantes. CASCADE est utilisé si ni CASCADE ni LOCAL ne sont spécifiés.

CREATE OR REPLACE VIEW est une extension du langage de PostgreSQL.