PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 15.10 » Référence » Commandes SQL » ALTER PUBLICATION

ALTER PUBLICATION

ALTER PUBLICATION — change la définition d'une publication

Synopsis

ALTER PUBLICATION nom ADD objet_publication [, ...]
ALTER PUBLICATION nom SET objet_publication [, ...]
ALTER PUBLICATION nom DROP objet_publication [, ...]
ALTER PUBLICATION nom SET ( paramètre_publication [= valeur] [, ... ] )
ALTER PUBLICATION nom OWNER TO { nouveau_propriétaire | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER PUBLICATION nom RENAME TO nouveau_nom

objet_publication est
parmi :

    TABLE [ ONLY ] nom_table [ * ] [ ( nom_colonne [, ... ] ) ] [ WHERE ( expression ) ] [, ... ]
    TABLES IN SCHEMA { nom_schéma | CURRENT_SCHEMA } [, ... ]
  

Description

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é.

Paramètres

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.

Exemples

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;
   

Compatibilé

ALTER PUBLICATION est une extension PostgreSQL au standard SQL.