pg逻辑复制创建发布语法使用说明
语法如下:
CREATE PUBLICATION name
[ FOR TABLE [ ONLY ] table_name [ * ] [, ...]
| FOR ALL TABLES ]
[ WITH ( publication_parameter [= value] [, ... ] ) ]
1.*说明
适用于父子表关系的同步
create publication pub_test for table tb_01*;
tb_01为父表,tb_02为子表
那么父表和子表也会发布了.
--父表
CREATE TABLE tb_01 (
name varchar(32),
population int,
altitude int
);
--子表
CREATE TABLE tb_02 (
state varchar(32)
) inherits (tb_01);
2.for all tables
create publication pub_test for all tables;
可以同步一个库下的所有的表,主库新增表后,需要在从库手工创建,同时需要刷新从库的订阅,语句如下:
db_rep=# alter subscription sub_test refresh publication;
说明:
1.发布和订阅都是位于特定的库下的,订阅不能垮库订阅
2.重新部署发版和订阅,需要把从库订阅端的数据清空,否则会导致数据重复
3.发布端删除数据
db_rep=# delete from tb_ee;
ERROR: cannot delete from table "tb_ee" because it does not have a replica identity and publishes deletes
HINT: To enable deleting from the table, set REPLICA IDENTITY using ALTER TABLE.
解决办法:
ALTER TABLE tb_ee REPLICA IDENTITY FULL;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2019-05-22 ogg主库更新从库没有该记录的处理办法