You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 15.2逻辑复制冲突:如何让发布端数据覆盖订阅端

PostgreSQL逻辑复制冲突:发布端强制覆盖订阅端冲突行解决方案

针对你遇到的主键冲突导致同步失败的问题,PostgreSQL 15.2支持通过配置订阅的冲突解决策略,实现发布端数据强制覆盖订阅端冲突行,具体方案如下:

1. 修改已存在的订阅(适用于已完成逻辑复制配置的场景)

直接修改现有订阅的冲突处理规则,指定冲突时用发布端数据更新订阅端:

ALTER SUBSCRIPTION your_subscription_name
SET (conflict_resolution = 'update');

执行后需重启订阅的应用进程生效:

ALTER SUBSCRIPTION your_subscription_name REFRESH PUBLICATION;

2. 创建订阅时指定冲突策略(适用于新建订阅场景)

如果是首次配置订阅,可在创建时直接设置冲突解决规则:

CREATE SUBSCRIPTION your_subscription_name
CONNECTION 'host=xxx port=xxx dbname=xxx user=xxx password=xxx'
PUBLICATION your_publication_name
WITH (conflict_resolution = 'update');

关键说明

  • 冲突解决依赖表的唯一约束或主键:你的表t1已定义PRIMARY KEY(a),满足冲突检测的前提条件。
  • conflict_resolution = 'update'会用发布端的全量字段值覆盖订阅端冲突行的对应字段;若需自定义更新字段,可配合column_list参数(需确保发布包含对应字段)。
  • 修改完成后,再次测试发布端插入主键为4的数据,订阅端的(4, 'bbb')会被自动更新为(4, 'four')。

内容的提问来源于stack exchange,提问作者Алексей Галабут

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:47:04