ALTER SUBSCRIPTION — modifier la définition d'une souscription
ALTER SUBSCRIPTIONnomCONNECTION 'conninfo' ALTER SUBSCRIPTIONnomSET PUBLICATIONnom_publication[, ...] [ WITH (option_publication[=valeur] [, ... ] ) ] ALTER SUBSCRIPTIONnomADD PUBLICATIONnom_publication[, ...] [ WITH (option_publication[=valeur] [, ... ] ) ] ALTER SUBSCRIPTIONnomDROP PUBLICATIONnom_publication[, ...] [ WITH (option_publication[=valeur] [, ... ] ) ] ALTER SUBSCRIPTIONnomREFRESH PUBLICATION [ WITH (option_rafraichissement[=value] [, ... ] ) ] ALTER SUBSCRIPTIONnomENABLE ALTER SUBSCRIPTIONnomDISABLE ALTER SUBSCRIPTIONnomSET (subscription_parameter[=valeur] [, ... ] ) ALTER SUBSCRIPTIONnomSKIP (option_ignore=valeur) ALTER SUBSCRIPTIONnomOWNER TO {nouveau_proprietaire| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SUBSCRIPTIONnomRENAME TOnouveau_nom
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,
ALTER SUBSCRIPTION ...{SET|ADD|DROP} PUBLICATION ...
avec l'option refresh à true et
ALTER SUBSCRIPTION ... SET (failover = true|false) ne
peuvent pas être
exécutées dans un bloc de transaction.
Les commandes ALTER SUBSCRIPTION ... REFRESH PUBLICATION et
ALTER SUBSCRIPTION ... {SET|ADD|DROP} PUBLICATION ...
avec l'option refresh à true 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.
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_publicationADD PUBLICATION nom_publicationDROP 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,
origin et
failover.
Seul un superutilisateur peut configurer password_required = false.
Lors de la modification de slot_name,
les valeurs des propriétés failover et
two_phase du slot nommé pourraient être différente
des paramètres failover
et two_phase
indiqués dans la souscription. Lors de la création du slot,
assurez-vous que les propriétés failover et
two_phase du slot correspondent aux valeurs des
paramètres de la souscription. Sinon, le slot sur le publieur pourrait
se comporter différemment de ce que disent les options de la
souscriptions : par exemple, le slot sur le publieur pourrait soit
être synchronisé sur les serveurs secondaires même si l'option failover
de la souscription est désactivée, soit être synchronisé même si
l'option failover
de la souscription est activée.
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 29.6 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.
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;
ALTER SUBSCRIPTION est une extension
PostgreSQL au standard SQL.