【Postgresql】触发器某个字段更新时执行,行插入或更新执行
1. postgresql触发器
触发器可以理解为一种绑定,在某个场景出现时自动做的操作,可以执行复杂的Procedure,也可以是简单的sql;
2. 触发器的创建及示例
1) 字段更新时,触发
业务场景,当tableA表的num更新的时候,把ID相同的数据的tabelA表的count字段值更新为num*10;
create or replace FUNCTION func_updateposition() RETURNS trigger
AS
$func_updateposition()
BEGIN
update tableA set count= num*10 where id = NEW.ID;
RETURN NEW;
END;
$func_updateposition$ LANGUAGE plpgsql;
create trigger updatePosition_trigger AFTER UPDATE OF "num" ON tableA
FOR EACH ROW EXECUTE PROCEDURE func_updateposition();
2) 行插入或更新时,触发
3. 触发器的删除
触发器是绑定在表的行或者列上的,删除语句中需要指定触发器名称及表名;
drop trigger updatePosition_trigger on tableA;
4. 触发器的坑
- 千万不要表的行列更新,每一行都建立触发器,那样表的数据量大了,会压力贼大;
- 分布式的情况下主外键依赖、触发器尽量不要,会带来额外消耗;
- 触发器可以用在必须的情况下,或者只是某个列字段更新或者插入上,这样会更无感,高效;
参考