【问题标题】:Bucardo custom replication logicBucardo 自定义复制逻辑
【发布时间】:2016-06-22 15:59:56
【问题描述】:

我对 Postgre SQL 中的 Bucardo 功能有疑问。 Bucardo 在几个数据库之间放置了同步表。 假设我们在 DB1 和 DB2 中有表 Orders。

create table orders(order_id integer primary key, item_id integer, quantity integer); 

我们正在对 DB1 中的 Orders 表进行更改。

insert into orders(item_id,quantity) values(1,235);

然后 Bucardo 将所有这些更改复制到 DB2 中的 Orders 表。 但除了这个同步之外,我希望 Bucardo 修改 DB2 中的表 Stock

create table stock(item_id integer primary key, name varchar(50), quantity integer);

只是为了 item_id = 1 的记录将 DB2 中的 stock 表的数量字段减少值 235(插入到 DB1 中的订单表的数量字段的值)。 是否可以通过这种方式定制 Bucardo?实现此功能的最佳方式是什么?

【问题讨论】:

    标签: postgresql database-replication bucardo


    【解决方案1】:

    这将很难实现,因为 bucardo 不会基于 SQL 语句进行复制。 但是,您可以在主数据库 DB1 上使用存储过程并复制该表。

    create or replace function stock_func() returns trigger as $$
    DECLARE
        val int;
    BEGIN
        val := NEW.quantity #do you addition or subtraction here
        #add your update statement below 
        execute 'UPDATE stock set .....;
        return NULL;
    END;
    $$ language plpgsql;
    
     create trigger update_stock before insert on address for each row execute procedure stock_func();
    

    【讨论】:

      猜你喜欢
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 2012-03-06
      • 2011-02-19
      • 2019-05-27
      相关资源
      最近更新 更多