关于Postgre SQL中的Bucardo功能,我有一个问题。Bucardo在几个数据库之间放置同步表。假设我们有DB1和DB2格式的表订单。
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表。但除了这个同步,我想布卡多在DB2中修改表股票
create table stock(item_id integer primary key, name varchar(50), quantity integer);对于item_id = 1的记录,将DB2中stock表的数量字段减去235 (即插入到DB1中orders表的数量字段中的值),这样可以自定义Bucardo吗?实现此功能的最佳方式是什么?
发布于 2016-07-26 23:38:17
这将很难实现,因为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();https://stackoverflow.com/questions/37973091
复制相似问题