2016-06-22 1 views
0

Postgre SQL의 Bucardo 기능에 관한 질문이 있습니다. Bucardo는 여러 데이터베이스간에 테이블을 동기화합니다. DB1과 DB2에 테이블 Orders가 있다고 상상해보십시오.Bucardo 사용자 지정 복제 논리

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

그리고 우리는 DB1의 주문 테이블을 변경하고 있습니다.

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

그런 다음 Bucardo는 이러한 모든 변경 사항을 DB2의 주문 테이블에 복제합니다. 그러나 떨어져 나가

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

그냥 값 (235)에 의해 DB2의 주식 테이블의 수량 필드를 감소 Bucardo는 DB2 테이블 재고를 수정하려면이 동기화에서 (값은 DB1에서 주문 테이블의 수량 필드에 삽입) item_id = 1 인 레코드에 대해서. 이런 방법으로 Bucardo를 사용자 정의 할 수 있습니까? 그리고이 기능을 구현하는 가장 좋은 방법은 무엇입니까?

답변

0

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(); 
관련 문제