La réplication logique se comporte de la même manière pour les
opérations DML dans le sens où les données seront mises à jour même si
la modification a été faite en local sur la base abonnée. Si les
données entrantes entrainent des violations de contrainte d'intégrité,
la réplication s'arrête. Cela sera référencé comme un
conflit.
Lorsque l'on réplique des opérations UPDATE
ou
DELETE
, les données manquantes ne produiront pas
de conflit et des opérations de la sorte seront simplement évitées.
Lorsqu'un conflit entraine une erreur, cela stoppe la réplication ; Le conflit devra être résolu manuellement par un utilisateur. Des informations détaillées concernant le conflit seront disponibles dans les journaux d'erreurs de l'instance abonnée.
La résolution peut être réalisée, soit en changeant les données sur
la base abonnée pour qu'elles ne soient plus en conflit avec les
données entrantes ou en évitant les transactions qui sont en conflit
avec les données existantes. La transaction peut être évitée en
utilisant la fonction
pg_replication_origin_advance()
avec
node_name
pointant sur le nom de l'abonnement,
ainsi que la position. La position courante d'origine peut être
consultée dans la vue système
pg_replication_origin_status
.