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

ALTER SUBSCRIPTION

ALTER SUBSCRIPTION — modifier la définition d'une souscription

Synopsis

ALTER SUBSCRIPTION nom CONNECTION 'conninfo'
ALTER SUBSCRIPTION nom SET PUBLICATION nom_publication [, ...] [ WITH ( option_publication [= valeur] [, ... ] ) ]
ALTER SUBSCRIPTION nom ADD PUBLICATION nom_publication [, ...] [ WITH ( option_publication [= valeur] [, ... ] ) ]
ALTER SUBSCRIPTION nom DROP PUBLICATION nom_publication [, ...] [ WITH ( option_publication [= valeur] [, ... ] ) ]
ALTER SUBSCRIPTION nom REFRESH PUBLICATION [ WITH ( option_rafraichissement [= value] [, ... ] ) ]
ALTER SUBSCRIPTION nom ENABLE
ALTER SUBSCRIPTION nom DISABLE
ALTER SUBSCRIPTION nom SET ( subscription_parameter [= valeur] [, ... ] )
ALTER SUBSCRIPTION nom SKIP ( option_ignore = valeur )
ALTER SUBSCRIPTION nom OWNER TO { nouveau_proprietaire | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER SUBSCRIPTION nom RENAME TO nouveau_nom
  

Description

ALTER SUBSCRIPTION peut changer la plupart des propriétés d'une souscription pouvant être spécifiées dans CREATE SUBSCRIPTION.

Vous devez être le propriétaire de la souscription pour utiliser ALTER SUBSCRIPTION. Pour renommer une souscription ou modifier son propriétaire, vous devez avoir le droit CREATE sur la base de données. De plus, pour modifier le propriétaire, vous devez être capable d'utiliser SET ROLE vers le nouveau rôle propriétaire. Si la souscription a password_required=false, seuls les superutilisateurs peuvent la modifier.

Lors du rafraichissement d'une publication, nous supprimons les relations qui ne font plus partie de la publication, et nous supprimons aussi les slots de synchronisation de table s'il en existe. Il est nécessaire de supprimer ces slots pour que les ressources allouées à la souscription sur l'hôte distant soient rendues. Si à cause d'erreurs réseau ou autres, PostgreSQL est incapable de supprimer les slots, un message d'erreur sera renvoyé. Pour continuer, l'utilisateur doit soit tenter une nouvelle fois l'opération, soit dissocier le slot de la souscription et supprimer la souscription comme expliquée dans DROP SUBSCRIPTION.

Les commandes ALTER SUBSCRIPTION ... REFRESH PUBLICATION et ALTER SUBSCRIPTION ...{SET|ADD|DROP} PUBLICATION ... avec l'option refresh activée ne peuvent pas être exécutées dans un bloc de transaction. Ces commandes ne peuvent pas non plus être exécutées quand la souscription a l'option two_phase activée, sauf si copy_data vaut false. Voir la colonne subtwophasestate de pg_subscription pour connaître l'état actuel de la validation en deux phases.

Paramètres

nom

Le nom de la souscription dont la propriété doit être modifiée.

CONNECTION 'conninfo'

Cette clause remplace la propriété de connexion positionnée à l'origine par CREATE SUBSCRIPTION. S'y référer pour plus d'informations.

SET PUBLICATION nom_publication
ADD PUBLICATION nom_publication
DROP PUBLICATION nom_publication

Ces syntaxes changent la liste des publications souscrites. SET remplace la liste entière des publications avec une nouvelle liste, ADD ajoute des publications supplémentaires à la liste de publications, et DROP supprime des publications de la liste des publications. Nous permettons aux publications inexistantes d'être indiquées dans les variantes ADD et SET pour que les utilisateurs puissent les ajouter après. Voir CREATE SUBSCRIPTION pour plus d'informations. Par défaut, cette commande agira aussi comme REFRESH PUBLICATION.

option_publication indique des options supplémentaires pour cette opération. Les options supportées sont :

refresh (boolean)

Si false, la commande n'essaiera pas de rafraichir des informations des tables. REFRESH PUBLICATION devrait alors être exécutée séparément. La valeur par défaut est true.

De plus, les options décrites sous REFRESH PUBLICATION peuvent être spécifiées pour contrôler l'opération implicite de rafraichissement.

REFRESH PUBLICATION

Récupère les informations de table manquante depuis la publication. Cela commencera la réplication des tables qui avaient été ajoutées en tant que souscriptions aux publications depuis CREATE SUBSCRIPTION ou depuis la dernière exécution de REFRESH PUBLICATION.

option_rafraichissement spécifie les options supplémentaires pour l'opération de rafraîchissement. Les options supportées sont :

copy_data (boolean)

Indique de copier les données pré-existantes dans la publication en cours de souscription quand la réplication démarre. La valeur par défaut est true.

Les tables précédemment souscrites ne sont pas copiées, même si la clause WHERE de filtre de lignes d'une table a depuis été modifiée.

Voir Notes pour des détails sur comment copy_data = true peut interagir avec le paramètre origin.

Voir le paramètre binary de CREATE SUBSCRIPTION pour des détails sur la copie de données pré-existantes dans un format binaire.

ENABLE

Active une souscription précédemment désactivée, démarrant le worker de réplication logique à la fin de la transaction.

DISABLE

Désactive une souscription en cours d'exécution, arrêtant le worker de réplication logique à la fin de la transaction.

SET ( subscription_parameter [= valeur] [, ... ] )

Cette clause change les paramètres initialement positionnés par CREATE SUBSCRIPTION. S'y référer pour plus d'informations. Les paramètres modifiables sont slot_name, synchronous_commit, binary, streaming, disable_on_error, password_required, run_as_owner, and origin. Seul un superutilisateur peut configurer password_required = false.

SKIP ( skip_option = valeur )

Ignore l'application de tous les changements de la transaction distante. Si des données entrantes violent des contraintes, la réplication logique s'arrêtera jusqu'à ce que le problème soit résolu. En utilisant la commande ALTER SUBSCRIPTION ... SKIP, le processus worker de réplication logique ignore tous les changements de modification de données dans la transaction. Cette option n'a pas d'effet sur les transactions qui sont déjà préparées en activant l'option two_phase sur le souscripteur. Après que le processus worker de la réplication logique ait ignoré avec succès la transaction ou ait terminé une transaction, le LSN, enregistré dans pg_subscription.subskiplsn) est effacé. Voir Section 31.5 pour les détails des conflits sur la réplication logique.

skip_option précise les options pour cette opération. La seule option acceptée est :

lsn (pg_lsn)

Indique le LSN de fin de la transaction distante dont les changements doivent être ignorés par le processus worker de réplication logique. Le LSN de fin est le LSN pour lequel la transaction est soit validée soit préparée. Ignorer les sous-transactions individuelles n'est pas supportée. Configurer à NONE réinitialise le LSN.

nouveau_proprietaire

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

nouveau_nom

Le nouveau nom de la souscription.

Lors de l'utilisation d'un paramètre de type boolean, la partie = valeur peut être omise, ce qui est équivalent à indiquer TRUE.

Exemples

Changer la publicatio souscrites par une publication en insert_only :

ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;
   

Désactive (stoppe) la souscription :

ALTER SUBSCRIPTION mysub DISABLE;
   

Compatibilité

ALTER SUBSCRIPTION est une extension PostgreSQL au standard SQL.