如何在PostgreSql中创建触发器?

时间:2013-07-12 06:57:11

标签: postgresql postgresql-9.1 postgresql-9.2

TRIGEER - >当我插入值时,从一个表到另一个表获取列值? 我有两张桌子(customer_detailsloan_balance)。 我需要的是,当我将数据插入loan_balance表时,我必须将customer_details表的列(custid)提供给loan_balance表。  这是我的查询的完整设置:SQL FIDDLE

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

1 个答案:

答案 0 :(得分:0)

Postgres有一种创造触发器的非传统方式:

  1. 创建一个返回类型trigger并返回NEW行记录
  2. 的函数
  3. 创建执行函数的触发器
  4. 以下是您需要的代码:

    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