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

PostgreSQL 15无法基于自定义类型创建条件发布,求解决办法

解决PostgreSQL逻辑复制发布中自定义枚举类型的WHERE条件问题

可行解决办法:

  • 将枚举类型转为文本进行比较
    利用类型转换把枚举值转为text内置类型,绕过自定义类型的限制,修改后的SQL语句:

    create publication cnt_publication_for_stk for table 
    cnt_title where (doc_type::text = 'PRODUCT');
    
  • 使用枚举的内部整数序号比较
    PostgreSQL枚举类型内部以整数存储,序号对应定义时的顺序(ARTICLE=1,PRODUCT=2,VOUCHER=3),可直接比较序号:

    create publication cnt_publication_for_stk for table 
    cnt_title where (doc_type::int = 2);
    

    注意:后续若修改枚举定义顺序(如新增/调整值的位置),该条件会失效,需谨慎使用。

  • 创建生成列后基于生成列过滤
    先给表添加一个文本类型的生成列,再基于该列创建发布,这种方式不受枚举定义变更影响:

    -- 添加生成列
    alter table cnt_title add column doc_type_text text generated always as (doc_type::text) stored;
    
    -- 创建发布
    create publication cnt_publication_for_stk for table 
    cnt_title where (doc_type_text = 'PRODUCT');
    

内容的提问来源于stack exchange,提问作者coterobarros

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:03:15