ALTER SUBSCRIPTION — modifier la définition d'une souscription
ALTER SUBSCRIPTIONnom
CONNECTION 'conninfo
' ALTER SUBSCRIPTIONnom
SET PUBLICATIONnom_publication
[, ...] [ WITH (option_publication
[=valeur
] [, ... ] ) ] ALTER SUBSCRIPTIONnom
ADD PUBLICATIONnom_publication
[, ...] [ WITH (option_publication
[=valeur
] [, ... ] ) ] ALTER SUBSCRIPTIONnom
DROP PUBLICATIONnom_publication
[, ...] [ WITH (option_publication
[=valeur
] [, ... ] ) ] ALTER SUBSCRIPTIONnom
REFRESH PUBLICATION [ WITH (option_rafraichissement
[=value
] [, ... ] ) ] ALTER SUBSCRIPTIONnom
ENABLE ALTER SUBSCRIPTIONnom
DISABLE ALTER SUBSCRIPTIONnom
SET (subscription_parameter
[=valeur
] [, ... ] ) ALTER SUBSCRIPTIONnom
SKIP (option_ignore
=valeur
) ALTER SUBSCRIPTIONnom
OWNER TO {nouveau_proprietaire
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SUBSCRIPTIONnom
RENAME 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_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
,
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.