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

29.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(将整行全量字段作为比对标识)。