2013-07-12 82 views
0

TRIGEER - >当我插入值时,从一个表到另一个表的列值? 我有两张桌子(customer_detailsloan_balance)。 我需要的是,当我将数据插入loan_balance表时,我必须将customer_details表的列(custid)转到loan_balance表。 这是我的查询的完整设置:SQL FIDDLE如何在PostgreSql中创建触发器?

所以我需要一个触发器被提出,并且数据应该自动更新而不需要动态插入custid。

+0

您是否阅读过在线文档?你有尝试过什么吗? – Bohemian

回答

0

Postgres有创建触发器的一种非常规的方式:

  1. 创建返回trigger类型的函数,并返回NEW行记录
  2. 创建执行功能

这里的一个触发您需要的代码:

CREATE FUNCTION synch_custid_proc() 
RETURNS trigger AS $$ 
BEGIN 
    NEW.custid = (
     select max(custid) 
     from customer_details 
     where creditid = NEW.creditid 
    ); 
    RETURN NEW; 
END; 
$$ LANGUAGE plpgsql 

CREATE TRIGGER synch_custid_trig 
BEFORE INSERT ON loan_amount 
FOR EACH ROW 
EXECUTE PROCEDURE synch_custid_proc(); 

我选择max(custid)而不是简单的custid,当有多个匹配的行时查找值。您可能需要调整此逻辑以适合您的数据。

查看live demo on SQLFiddle