在 PostgreSQL 中创建触发器

Creating trigger in PostgreSQL

我在 PostgreSQL 中有 2 个 table

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

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

我想在 PostgeSQL 中创建一个触发器,因此如果我在 table A 中更新列 area 中的值,area_LUA 中的值将自动更改 table B.

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

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

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

触发器 area_lua 将在 table A 的每次更新后执行。触发函数 update_area_lua 检查 area 的值是否改变,并根据给定的 parent_id 相应地更新 table 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();