Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

PostgreSQL

Choisissez la catégorie, puis la rubrique :

ALTER FOREIGN TABLE

ALTER FOREIGN TABLE — modifie la définition de la table distante

Synopsis

ALTER FOREIGN TABLE [ IF EXISTS ] nom
    action [, ... ]
ALTER FOREIGN TABLE [ IF EXISTS ] nom
    RENAME [ COLUMN ] nom_colonne TO nouveau_nom_colonne
ALTER FOREIGN TABLE [ IF EXISTS ] nom
    RENAME TO nouveau_nom
ALTER FOREIGN TABLE [ IF EXISTS ] nom
    SET SCHEMA nouveau_schéma

action peut être :

    ADD [ COLUMN ] nom_colonne type_données
    ADD [ COLUMN ] nom_colonne type_données [ COLLATE collation ] [ contrainte_colonne [ ... ] ]
    DROP [ COLUMN ] [ IF EXISTS ] nom_colonne [ RESTRICT | CASCADE ]
    ALTER [ COLUMN ] nom_colonne [ SET DATA ] TYPE type_données
    ALTER [ COLUMN ] nom_colonne SET DEFAULT expression
    ALTER [ COLUMN ] nom_colonne DROP DEFAULT
    ALTER [ COLUMN ] nom_colonne { SET | DROP } NOT NULL
    ALTER [ COLUMN ] nom_colonne SET STATISTICS integer
    ALTER [ COLUMN ] nom_colonne SET ( option_attribut = valeur [, ... ] )
    ALTER [ COLUMN ] nom_colonne RESET ( option_attribut [, ... ] )
    ALTER [ COLUMN ] nom_colonne OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ])
    OWNER TO nouveau_propriétaire
    OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ])

Description

ALTER FOREIGN TABLE modifie la définition d'une table distante existante. Il existe plusieurs variantes :

ADD COLUMN

Ajoute une nouvelle colonne à la table distante en utilisant une syntaxe identique à celle de CREATE FOREIGN TABLE(7). Contrairement au comportement de l'ajout d'une colonne à une table, rien ne se passe au niveau stockage : cette action déclare simplement qu'une nouvelle colonne est accessible via la table distante.

DROP COLUMN [ IF EXISTS ]

Supprime une colonne de la table. L'option CASCADE doit être utilisée lorsque des objets en dehors de la table dépendant de cette colonne, comme par exemple des références de clés étrangères ou des vues. Si IF EXISTS est indiqué et que la colonne n'existe pas, aucune erreur n'est renvoyée. Dans ce cas, un message d'avertissement est envoyé à la place.

IF EXISTS

Ne retourne par d'erreur si la table distante n'existe pas. Seul un message d'avertissement est retourné dans ce cas.

SET DATA TYPE

Change le type d'une colonne de la table.

SET/DROP DEFAULT

Ces clauses ajoutent ou suppriment une valeur par défaut pour une colonne. Les valeurs par défaut s'appliquent seulement pour les prochaines commandes INSERT et UPDATE ; elles ne changent rien aux lignes déjà présentes dans la table.

SET/DROP NOT NULL

Autorise / refuse l'ajout de valeurs NULL dans la colonne. SET NOT NULL ne peut être utilisé que si la colonne ne contient pas de valeurs NULL.

SET STATISTICS

Cette clause définit pour chaque colonne l'objectif de collecte de statistiques pour les opérations d'ANALYZE(7) ultérieures. Voir les clauses correspondantes de l'instruction ALTER TABLE(7) pour plus de détails.

SET ( option_attribut = valeur [, ... ] ), RESET ( option_attribut [, ... ] )

Cette clause définit ou met à zéro des options propres à une colonne. Voir les clauses correspondantes de l'instruction ALTER TABLE(7) pour plus de détails.

OWNER

Change le propriétaire d'une table distante. Le nouveau propriétaire est celui passé en paramètre.

RENAME

Change le nom d'une table distante ou le nom d'une colonne individuelle de la table distante. Cela n'a aucun effet sur la donnée stockée.

SET SCHEMA

Déplace la table distante dans un autre schéma.

OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )

Modifie les options de la table distante et de ses colonnes. L'action à effectuer est spécifiée par ADD (ajout), SET (définition) ou DROP (suppression). Si aucune action n'est mentionnée, ADD est utilisée. Les noms des options autorisées et leurs valeurs sont spécifiques à chaque wrapper de données distantes. L'utilisation répétée de la même option n'est pas autorisée (bien qu'il soit possible qu'une option de table et de colonne aie le même nom). Les noms d'option et leur valeur sont en outre validées par la bibliothèque du wrapper de données distantes.

À l'exception de RENAME et SET SCHEMA, toutes les actions peuvent être combinées en une liste de modifications appliquées parallèlement. Par exemple, il est possible d'ajouter plusieurs colonnes et/ou de modifier plusieurs colonnes en une seule commande.

Il faut être propriétaire de la table pour utiliser ALTER FOREIGN TABLE. Pour modifier le schéma d'une table, le droit CREATE sur le nouveau schéma est requis. Pour modifier le propriétaire de la table, il est nécessaire d'être un membre direct ou indirect du nouveau rôle et ce dernier doit avoir le droit CREATE sur le schéma de la table (ces restrictions assurent que la modification du propriétaire ne diffère en rien de ce qu'il est possible de faire par la suppression et la re-création de la table. Néanmoins, dans tous les cas, un superutilisateur peut modifier le propriétaire de n'importe quelle table). Pour ajouter une colonne ou modifier un type de colonne, vous devez aussi détenir le droit USAGE sur le type de donnée.

Paramètres

nom

Le nom (éventuellement qualifié du nom du schéma) de la table à modifier.

nom_colonne

Le nom d'une colonne, existante ou nouvelle.

nouveau_nom_colonne

Le nouveau nom d'une colonne existante.

nouveau_nom

Le nouveau nom de la table.

type_données

Le type de données de la nouvelle colonne, ou le nouveau type de données d'une colonne existante.

CASCADE

Les objets qui dépendent de la colonne ou de la contrainte supprimée sont automatiquement supprimés (par exemple, les vues référençant la colonne).

RESTRICT

La colonne ou la contrainte n'est pas supprimée si des objets en dépendent. C'est le comportement par défaut.

nouveau_propriétaire

Le nom d'utilisateur du nouveau propriétaire de la table distante.

nouveau_schéma

Le nom du schéma vers lequel la table distante sera déplacée.

Notes

Le mot clé COLUMN n'est pas nécessaire. Il peut être omis.

La cohérence avec le serveur distant n'est pas vérifiée lorsqu'une colonne est ajoutée ou supprimée avec la commande ADD COLUMN ou DROP COLUMN, lorsqu'une contrainte CHECK ou NOT NULL est ajoutée, ou encore lorsqu'un type de colonne est modifié avec l'action SET DATA TYPE. Il est ainsi de la responsabilité de l'utilisateur de s'assurer que la définition de la table distante est compatible avec celle du serveur distant.

Voir la commande CREATE FOREIGN TABLE(7) pour une description plus complète des paramètres valides.

Exemples

Pour interdire les valeurs NULL sur une colonne :

ALTER FOREIGN TABLE distributeurs ALTER COLUMN rue SET NOT NULL;

Pour modifier les options d'une table distante :

ALTER FOREIGN TABLE mon_schema.distributeurs OPTIONS (ADD opt1 'valeur', SET opt2, 'valeur2', DROP opt3 'valeur3');

Compatibilité

Les actions ADD, DROP, et SET DATA TYPE sont conformes au standard SQL. Les autres actions sont des extensions PostgreSQL™ du standard SQL. De plus, la possibilité de combiner de multiples modifications en une seule commande ALTER FOREIGN TABLE est une extension PostgreSQL™.

La commande ALTER FOREIGN TABLE DROP COLUMN peut être utilisée pour supprimer jusqu'à la dernière colonne d'une table distante, permettant ainsi d'obtenir une table sans colonne. Il s'agit d'une extension du standard SQL, qui ne permet pas de gérer des tables sans colonnes.

Contacter le responsable de la rubrique PostgreSQL

Partenaire : Hébergement Web