【问题标题】:Creating trigger in PostgreSQL在 PostgreSQL 中创建触发器
【发布时间】:2018-12-18 04:23:46
【问题描述】:

我在 PostgreSQL 中有 2 个表

表A:https://2.pik.vn/201819cbcc97-8d59-4d3f-9e47-38b5e33d00df.jpg

表B:https://2.pik.vn/20186c925ba2-7c9c-4253-ba28-497df1465b4f.jpg

我想在 PostgeSQL 中创建一个触发器,所以如果我更新表 A 中列 area 中的值,area_LUA 中的值将在表 B 中自动更改。

area_LUA = total sum (area)*100 条件为A.parent_id = B.parent_id and CODE ='LUA'

有人可以指导我如何创建这样的触发器吗?非常感谢

【问题讨论】:

    标签: sql postgresql sum database-trigger


    【解决方案1】:

    以下触发器应该可以完成工作。

    触发器area_lua 将在每次更新表A 后执行。触发函数update_area_lua 检查area 的值是否发生变化,并根据给定的parent_id 相应地更新表B 中的列area_LUA。

    CREATE OR REPLACE FUNCTION update_area_lua()
        RETURNS trigger AS
    $BODY$
    BEGIN
        IF NEW.area <> OLD.area THEN
            UPDATE B
            SET area_LUA = (
                SELECT SUM(area) * 100 
                FROM A 
                WHERE parent_id = B.parent_id AND CODE ='LUA'
            )
            WHERE parent_id = NEW.parent_id;
        END IF;
        RETURN NEW;
    END;
    $BODY$
    
    
    CREATE TRIGGER area_lua
        AFTER UPDATE
        ON A
        FOR EACH ROW
        EXECUTE PROCEDURE update_area_lua();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-04
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 2014-05-09
      相关资源
      最近更新 更多