CREATE SUBSCRIPTION — définir une nouvelle souscription
CREATE SUBSCRIPTIONnom_souscriptionCONNECTION 'conninfo' PUBLICATIONnom_publication[, ...] [ WITH (param_souscription[=valeur] [, ... ] ) ]
   CREATE SUBSCRIPTION ajoute une nouvelle souscription pour
   la base de donnée courante.  Le nom de la souscription doit être différent
   du nom de toutes les autres souscriptions existante dans la base.
  
La souscription représente une connexion de réplication vers un serveur publiant des données. Ainsi cette commande ne fait pas qu'ajouter des définitions dans le catalogue local mais crée également un slot de réplication sur le serveur publiant les données.
Un worker de réplication logique sera démarré pour répliquer les données pour la nouvelle souscription à la vlidation de la transaction dans laquelle cette commande est lancée.
Des informations supplémentaires sur la souscription et la réplication logique dans son ensemble sont également disponible sur Section 31.2 et Chapitre 31.
nom_souscriptionLe nom de la nouvelle souscriptions.
CONNECTION 'conninfo'La chaîne de connexion vers la serveur publiant les données. Pour plus de détails voir Section 33.1.1.
PUBLICATION nom_publicationNom des publications sur le serveur publiant les données auxquelles souscrire.
WITH ( param_souscription [= valeur] [, ... ] )Cette clause spécifie les paramètres facultatifs pour une souscription. Les paramètres suivants sont supportés :
copy_data (boolean)
          Spécifie si les données existantes dans les publications qui sont
          en train d'être souscrites devraient être copiées une fois la
          réplication démarrée.  La valeur par défaut est
          true.
         
create_slot (boolean)
          Spécifie si la commande devrait créer le slot de réplication sur le
          serveur publiant les données.  La valeur par défaut est
          true.
         
enabled (boolean)
          Spécifie si la souscription devrait répliquer activement, ou si elle
          devrait uniquement configurée mais pas démarrée.  La valeur par
          défaut est true.
         
slot_name (string)Le nom du solt de réplication à utiliser. Le comportement par défaut est d'utiliser le nom de la souscription comme nom de slot.
          Quand slot_name est positionné à
          NONE, il n'y aura pas de slot de réplication
          associée ) la souscription.  Cela peut être utile si le slot de
          réplication sera crée manuellement ultérieurement.  Une telle
          souscription doit également avoir à la fois
          enabled et create_slot
          positionnés à false.
         
synchronous_commit (enum)
          La valeur de ce paramètre surcharge le paramètre
          synchronous_commit. La valeur par défaut est
          off.
         
          Il est sans danger d'utiliser off pour la réplication logique :
          Si le souscripteur perd des transactions à cause d'une
          synchronisation manquante, les données seront renvoyée par le serveur publiant les données.
         
          Un paramétrage différent pourrait être appropriée lorsque la
          réplication logique est utilisée.  Les workers de réplication logique
          rapportent la position d'écriture et de synchronisation au serveur
          publiant les données, et lorsque la réplication synchrone est
          utilisée, le serveur publiant les données attendra la
          synchronisation.  Cela veut dire que positionner
          synchronous_commit pour le souscripteur à
          off quand la souscription est utilisée pour de la
          réplication synchrone pourrait augmenter la latence des
          COMMIT sur le serveur publiant les données. Dans
          ce scénario, il peut être avantageux de positionner
          synchronous_commit
          à local ou au dessus.
         
connect (boolean)
          Spécifie si CREATE SUBSCRIPTION devrait se connecter au serveur publiant les données ou non.
          Positionner ce paramètre à false changer la valeur
          par défaut de enabled,
          create_slot et
          copy_data à false.
         
          Il n'est pas autorisé de combiner connect
          positionné à false et enabled,
          create_slot, ou copy_data
          positionné à true.
         
          Puisqu'aucune connection n'est faite quand cette option est initialisée
          à false,
          les tables ne sont pas souscrites, et donc après l'activation de la
          souscription rien ne sera répliqué.  Il est nécessaire d'exécuter
          ALTER SUBSCRIPTION ... REFRESH PUBLICATION afin
          que les tables soient souscrites.
         
Voir Section 31.7 pour plus de détail sur comment configurer le contrôle d'accès entre la souscription et l'instance de publication.
   Lors de la création d'un slot de réplication (comportement par défaut),
   CREATE SUBSCRIPTION ne peut pas être exécuté à
   l'intérieur d'un bloc de transaction.
  
   Créer une souscription qui connecte la même instance (par exemple, pour
   répliquer entre des bases de données de la même instance ou pour répliquer
   dans la même base de données) réussira seulement si le slot de réplication
   n'est pas créé dans la même commande. Sinon, l'appel à CREATE
    SUBSCRIPTION va pauser. Pour le faire fonctionner, créer le slot
   de réplication séparément (en utilisant la fonction
   pg_create_logical_replication_slot avec le nom de
   plugin pgoutput) et créer la souscription en utilisant
   le paramètre create_slot = false. C'est une restriction
   d'implémentation qui pourrait être supprimé dans une prochaine version.
  
   Créer une souscription à un serveur distant qui réplique les tables dans la
   publication mypublication et
   insert_only et démarre la réplication immédiatement après
   le commit :
   
CREATE SUBSCRIPTION mysub
         CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb'
        PUBLICATION mypublication, insert_only;
   
   Crée une souscription vers un serveur distant qui réplique les tables
   dans la publication insert_only et ne commence pas
   la réplication jusqu'à ce qu'elle soit activée plus tard.
   
CREATE SUBSCRIPTION mysub
         CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb'
        PUBLICATION insert_only
               WITH (enabled = false);
   
   CREATE SUBSCRIPTION est une extension
   PostgreSQL au standard SQL.