我在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中创建一个触发器,因此,如果我更新表area
的列A
中的值,则area_LUA
中的值将在表B
中自动更改。
area_LUA = total sum (area)*100
,条件为A.parent_id = B.parent_id and CODE ='LUA'
有人可以指导我如何创建这样的触发器吗?非常感谢
答案 0 :(得分:0)
以下触发器应完成工作。
在对表area_lua
进行每次更新后,将触发A
。触发函数update_area_lua
检查area
的值是否已更改,并相对于给定的area_LUA
更新表B
中的列parent_id
。
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();