发布端支持在建发布时附加 WHERE 过滤条件(行过滤器 Row Filters),从而实现仅将满足特定业务条件的数据行下发同步给订阅端:
CREATE PUBLICATION pda_pub FOR TABLE users WHERE (country = 'CN');
通过在发布时附加 WHERE 子句,可只将满足特定谓词条件的行同步到下游。
行过滤器表达式中严禁引用用户自定义函数、系统目录表或易失函数。
若发布了分区表,行过滤条件可以定义在父表上,也可定义在各个底层分区上。
在初次同步存量基线数据时,表同步工作进程同样严格遵循行过滤谓词导出数据。
当一个订阅订阅了多个包含同一数据表的发布时,各个发布的行过滤条件以逻辑 OR 的形式联合生效。
例如仅发布活动状态的订单:
CREATE PUBLICATION active_orders FOR TABLE orders WHERE (status = 'ACTIVE');