如何在PostgreSql中创建触发器?

如何在PostgreSql中创建触发器?,postgresql,postgresql-9.1,postgresql-9.2,Postgresql,Postgresql 9.1,Postgresql 9.2,TRIGEER-->在插入值时从一个表到另一个表获取列值? 我有两张表(customer\u details和loan\u balance)。 我需要的是,当我将数据插入贷款余额表时,我必须将customer_details表的列(custid)添加到贷款余额表中。 这是我的查询的完整设置: 因此,我需要触发一个触发器,并且数据应该在不动态插入custid的情况下自动更新。Postgres有一种非传统的创建触发器的方法: 创建一个函数,返回类型trigger,并返回NEW行记录 创建一个执行函数

TRIGEER-->在插入值时从一个表到另一个表获取列值? 我有两张表(
customer\u details
loan\u balance
)。 我需要的是,当我将数据插入贷款余额表时,我必须将customer_details表的列(
custid
)添加到贷款余额表中。 这是我的查询的完整设置:


因此,我需要触发一个触发器,并且数据应该在不动态插入custid的情况下自动更新。

Postgres有一种非传统的创建触发器的方法:

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

    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
    ,以防有多行匹配。您可能需要调整此逻辑以适合您的数据


    参见a

    您是否阅读了在线文档?你试过什么吗?