CREATE VIEW
CREATE VIEW — Définir une vue
Synopsis
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW nom [ ( nom_colonne [, ...] ) ]
AS requête
Description
CREATE VIEW
définit
une vue d'après 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 utilisée dans une requête.
CREATE OR REPLACE
VIEW
a la même finalité, mais si une vue du même
nom existe déjà, elle est remplacée. Une vue ne peut être remplacée
que par une requête engendrant le même ensemble de colonnes
(c'est-à-dire avec les mêmes noms de colonnes et les même types de
données).
Si un nom de schéma est donné (par exemple CREATE VIEW monschema.mavue ...), alors la vue est
créée dans ce schéma. Dans le cas contraire, elle est créée dans le
schéma courant. Les vues temporaires existent dans un schéma
spécial. Il n'est donc pas nécessaire de fournir de schéma pour les
vues temporaires. Le nom de la vue doit être différent du nom de
toute autre vue, table, séquence ou index du même schéma.
Paramètres
-
TEMPORARY ou
TEMP
-
La vue est temporaire. Les vues temporaires sont
automatiquement supprimées en fin de session. Les relations
permanentes qui portent le même nom ne sont plus visibles
pour la session tant que la vue temporaire existe, sauf s'il
y est fait référence avec le nom du schéma.
Si l'une des tables référencées par la vue est temporaire, la
vue est alors elle-aussi temporaire (que TEMPORARY soit spécifié ou non).
-
nom
-
Le nom de la vue à créer (éventuellement qualifié 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 est
déduit de la requête.
-
requête
-
Une commande SELECT ou VALUES qui fournira les colonnes et lignes
de la vue.
Notes
Actuellement, les vues sont en lecture seule : le système
n'autorise pas une insertion, une mise à jour ou une suppression
sur une vue. Les effets d'une vue actualisable peuvent être
reproduits par la création de règles de réécriture des insertions,
suppressions, mises à jour, etc. sur la vue en actions appropriées
sur les autres tables. CREATE RULE présente des informations
utiles à ce propos.
L'instruction DROP VIEW est utilisée pour supprimer les vues.
Il est important de s'assurer que le nom et le type des colonnes de
la vue correspondent à ce qui est souhaité. Ainsi,
CREATE VIEW vista AS SELECT 'Hello World';
présente deux défauts majeurs : le nom de la colonne prend la
valeur implicite ?column? et son type de
données le type implicite unknown. Pour
obtenir une chaîne de caractères dans le résultat de la vue, on
peut écrire
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 comme si elles étaient appelées
directement par la requête utilisant la vue. Par conséquent,
l'utilisateur de la vue doit avoir le droit d'appeler toutes les
fonctions utilisées par la vue.
Exemples
Créer une vue composée des comédies :
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 [ CASCADED | LOCAL ] CHECK OPTION ]
Les clauses optionnelles de la commande SQL complète sont :
-
CHECK OPTION
-
Cette option concerne les vues actalisables. Toutes les
commandes
INSERT
et
UPDATE
appliquées à la vue
sont contrôlées pour s'assurer que les données satisfont les
conditions de définition de la vue (les nouvelles données
sont visibles au travers de la vue). Si ce n'est pas le cas,
la mise à jour est rejetée.
-
LOCAL
-
Contrôle d'intégrité de la vue.
-
CASCADED
-
Contrôle d'intégrité de la vue et de toutes les vues
dépendantes. CASCADED est implicite
si ni CASCADED ni LOCAL ne sont précisés.
CREATE OR REPLACE
VIEW
est une extension PostgreSQL™, tout comme le concept de
vue temporaire.