Documentation PostgreSQL 9
La description
CREATE TABLE AS crée une table et remplit les données calculées par une commande SELECT. Les colonnes du tableau ont les noms et les types de données associés aux colonnes de sortie du SELECT (sauf que vous pouvez remplacer les noms de colonnes en donnant une liste explicite de nouveaux noms de colonnes).
CREATE TABLE AS a une certaine ressemblance avec la création d'un point de vue, mais il est vraiment tout à fait différent: il crée une nouvelle table et évalue la requête juste une fois pour remplir la nouvelle table initialement. La nouvelle table ne sera pas suivre les modifications suivantes aux tables source de la requête. En revanche, une vue réévalue sa déclaration définissant SELECT chaque fois qu'il est interrogé.
Paramètres
Ignoré. L'utilisation de ces mots-clés est dépréciée; reportez-vous à CREATE TABLE pour plus de détails.
Si cela est spécifié, la table est créée comme une table temporaire. Reportez-vous à CREATE TABLE pour plus de détails.
Si cela est spécifié, la table est créée comme une table non exploitée. Reportez-vous à CREATE TABLE pour plus de détails.
Le nom (éventuellement qualifié du schéma) de la table à créer.
Le nom d'une colonne dans la nouvelle table. Si les noms de colonnes ne sont pas fournis, ils sont pris des noms de colonnes de sortie de la requête.
Cette clause spécifie les paramètres de stockage en option pour la nouvelle table; voir Paramètres de stockage pour plus d'informations. La clause WITH peut également inclure OIDS = TRUE (ou tout simplement OIDS) pour indiquer que les lignes de la nouvelle table devraient avoir OID (identifiants d'objets) qui leur sont assignés, ou OIDS = FALSE pour indiquer que les lignes ne devraient pas avoir OID. Voir CREATE TABLE pour plus d'informations.
Ceux-ci sont équivalents à syntaxes obsolètes EN (OID) et avec (OIDS = FALSE). respectivement. Si vous souhaitez donner à la fois un réglage de OIDS et les paramètres de stockage, vous devez utiliser la syntaxe WITH (.); voir au dessus.
Le comportement des tables temporaires à la fin d'un bloc de transaction peut être contrôlée en utilisant ON COMMIT. Les trois options sont les suivantes:
Aucune action particulière est prise aux extrémités des transactions. Ceci est le comportement par défaut.
Toutes les lignes de la table temporaire seront supprimés à la fin de chaque bloc de transaction. , Un TRUNCATE automatique se fait à chaque validation.
La table temporaire sera supprimée à la fin du bloc de transaction en cours.
Le nom_tablespace est le nom du tablespace dans lequel la nouvelle table doit être créée. Si non spécifié, default_tablespace est consulté, ou temp_tablespaces si la table est temporaire.
Cette clause indique si oui ou non les données produites par la requête doivent être copiés dans la nouvelle table. Dans le cas contraire, seule la structure de la table est copiée. La valeur par défaut est de copier les données.
Cette commande est fonctionnellement similaire à SELECT INTO. mais il est préféré car il est moins susceptible d'être confondu avec d'autres utilisations de la syntaxe SELECT INTO. En outre, CREATE TABLE AS offre des fonctionnalités offertes par SELECT INTO.
Avant PostgreSQL 8.0, CREATE TABLE AS toujours inclus OID dans la table, il a créé. À partir de PostgreSQL 8.0, la commande CREATE TABLE AS permet à l'utilisateur de spécifier explicitement si des OID. Si la présence d'OID est pas explicitement spécifié, la variable de configuration default_with_oids est utilisé. À partir de PostgreSQL 8.1, cette variable est fausse par défaut, le comportement par défaut ne correspond pas aux pré-versions 8.0. Les applications qui requièrent des OID dans la table créée par CREATE TABLE AS spécifier explicitement WITH (OID) pour assurer un comportement souhaité.
Créer une nouvelle table films_recent entrées récentes des films de table:
Pour copier une table complètement, la forme abrégée en utilisant la commande TABLE peut également être utilisé:
Créer une nouvelle table temporaire films_recents. comprenant les entrées récentes des films de table. en utilisant une déclaration préparée. La nouvelle table a OID et sera supprimée à engager:
Compatibilité
CREATE TABLE AS est conforme à la norme SQL. Les éléments suivants sont des extensions non standard:
La norme exige des parenthèses autour de la clause de sous-requête; dans PostgreSQL. ces parenthèses sont facultatifs.
Dans la norme, la clause DONNEES [NO] est nécessaire; PostgreSQL est facultative.
PostgreSQL gère les tables temporaires d'une manière assez différente de la norme; voir CREATE TABLE pour plus de détails.
La clause est une extension de PostgreSQL; ni les paramètres de stockage ni OID sont dans la norme.
Le concept PostgreSQL de tablespaces ne fait pas partie de la norme. Par conséquent, la clause TABLESPACE est une extension.