PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

29.1. 发布 #

29.1.1. 发布与复制标识

发布(Publication)定义在任何物理主库节点上。一个发布对应一张表或一组表的变更事件集合。通过 CREATE PUBLICATION 创建发布:

CREATE PUBLICATION mypub FOR TABLE users, departments;
CREATE PUBLICATION alltables FOR ALL TABLES;

可以精确控制向订阅端同步哪些特定的数据操作类型(默认包含 INSERT, UPDATE, DELETE, TRUNCATE):

CREATE PUBLICATION insert_only FOR TABLE mytable WITH (publish = 'insert');

为了能够准确复制 UPDATE 与 DELETE 操作,发布端的数据表必须具备复制标识(Replica Identity),以便在订阅端定位并更新对应的目标行。在默认情况下,表的主键自动充当复制标识。若表无主键,可使用 ALTER TABLE ... REPLICA IDENTITY 指定唯一的候选索引,或在极端情况下声明为 FULL(将整行全量字段作为比对标识)。

29.1.1. 发布与复制标识 #

在发布端上,被发布的表必须配置适当的复制标识(Replica Identity,参见 REPLICA IDENTITY),以便在下游准确识别待更新或删除的存量行。默认通常采用主键作为复制标识。