ALTER PUBLICATION — change la définition d'une publication
ALTER PUBLICATIONnom
ADDobjet_publication
[, ...] ALTER PUBLICATIONnom
SETobjet_publication
[, ...] ALTER PUBLICATIONnom
DROPobjet_publication
[, ...] ALTER PUBLICATIONnom
SET (paramètre_publication
[=valeur
] [, ... ] ) ALTER PUBLICATIONnom
OWNER TO {nouveau_propriétaire
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PUBLICATIONnom
RENAME TOnouveau_nom
oùobjet_publication
est parmi : TABLE [ ONLY ]nom_table
[ * ] [ (nom_colonne
[, ... ] ) ] [ WHERE (expression
) ] [, ... ] TABLES IN SCHEMA {nom_schéma
| CURRENT_SCHEMA } [, ... ]
La commande ALTER PUBLICATION
peut modifier les attributs
d'une publication.
Les trois premières variantes modifient les tables/schémas faisant partie de
la publication. La clause SET
remplacera la liste des
tables/schémas de la publication avec celle indiquée ; les
schémas/tables existant qui étaient présents dans la publication seront
supprimés. Les clauses ADD
et DROP
,
respectivement, ajouteront et supprimeront une ou plusieurs tables/schémas à
la publication. Notez qu'ajouter des tables/schémas à une publication où des
souscriptions ont déjà eu lieu nécessitera un ALTER SUBSCRIPTION ...
REFRESH PUBLICATION
du côté de l'abonné pour devenir réelle. Notez
aussi que DROP TABLES IN SCHEMA
ne supprimera aucune table
du schéma qui a été ajoutée en utilisant FOR
TABLE
/ADD TABLE
, et que la combinaison de
DROP
avec une clause WHERE
n'est pas
autorisée.
La quatrième variante de cette commande listée dans le synopsis peut changer toutes les propriétés de la publication spécifiées dans CREATE PUBLICATION. Les propriétés qui ne sont pas mentionnées dans la commande restent à leurs anciennes valeurs.
Les variantes suivantes modifient le propriétaire et le nom de la publication.
Vous devez être le propriétaire de la publication pour utiliser
ALTER PUBLICATION
. Ajouter une table à une publication
requiert en plus d'être le propriétaire de cette table. Les clauses
ADD TABLES IN SCHEMA
et SET TABLES IN
SCHEMA
pour une publication requièrent que l'utilisateur exécutant
la requête ait l'attribut SUPERUSER
. Pour modifier le
propriétaire, vous devez aussi être un membre direct ou indirect du nouveau
rôle propriétaire. Le nouveau propriétaire doit avoir le droit
CREATE
sur la base. De plus, le nouveau propriétaire d'une
publication FOR ALL TABLES
et FOR TABLES IN
SCHEMA
doit avoir l'attribut SUPERUSER
.
Cependant, un superutilisateur peut modifier le propriétaire d'une
publication sans ces restrictions.
Ajouter/configurer tout schéma quand la publication quand la publication publie aussi une table avec une liste de colonnes et vice-verse n'est pas supporté.
name
Le nom d'une publication existante dont la définition doit être modifiée.
nom_table
Nom d'une table existante. Si ONLY
est spécifié avant
le nom de la table, seule cette table est affectée. Si
ONLY
n'est pas spécifié, la table et toutes les tables
descendantes (s'il y en a) sont affectées. *
peut être
spécifié de manière facultative après le nom de la table pour indiquer
explicitement que les tables descendantes doivent être inclues.
En supplément, une liste de colonnes peut être indiquée. Voir CREATE PUBLICATION pour les détails. Notez qu'une souscription ayant plusieurs publications pour lesquelles la même table a été publié avec des listes de colonnes différentes n'est pas supporté. Voir Attention : Combiner des listes de plusieurs publications pour des détails sur des problèmes potentiels lors de la modification des listes de colonnes.
Si la clause optionnelle WHERE
est indiquée, les lignes
pour lesquelles expression
est évaluée à false ou NULL ne seront pas publiées. Notez que des
parenthèses sont requises autour de l'expression. expression
est évalué avec le rôle utilisé
pour la connexion de réplication.
nom_schéma
Nom d'un schéma existant.
SET ( param_publication
[= valeur
] [, ... ] )
Cette clause change les paramètres de la publication positionnés à l'origine par CREATE PUBLICATION. Consulter cette page pour plus d'information.
nouveau_proprietaire
Le nom d'utilisateur du nouveau propriétaire de la publication.
nouveau_nom
Le nouveau nom de la publication.
Changer la publication pour ne publier que les suppressions et les mises à jour :
ALTER PUBLICATION noinsert SET (publish = 'update, delete');
Ajouter des tables à la publication :
ALTER PUBLICATION mypublication ADD TABLE users (user_id, firstname), departments;
Modifier l'ensemble de colonnes publiées pour une table :
ALTER PUBLICATION mypublication SET TABLE users (user_id, firstname, lastname), TABLE departments;
Ajouter les schémas marketing
et
sales
à la publication
sales_publication
:
ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;
Ajouter les tables users
,
departments
et le schéma
production
à la publication
production_publication
:
ALTER PUBLICATION production_publication ADD TABLE users, departments, TABLES IN SCHEMA production;
ALTER PUBLICATION
est une extension
PostgreSQL au standard SQL.