小编pim*_*ttc的帖子

如何在 postgresql 中为多个表重用更新触发器?

在新项目的数据库中,我已经开始约定让每个表都有一个最后修改的时间戳列。为了实现这一点,我为每个表编写了一个触发器:

CREATE TRIGGER touch_users
  BEFORE UPDATE
  ON users
  FOR EACH ROW
  WHEN (OLD.modification_time IS NOT DISTINCT FROM NEW.modification_time)
  EXECUTE PROCEDURE touch_modification_time();

CREATE TRIGGER touch_company
  BEFORE UPDATE
  ON company
  FOR EACH ROW
  WHEN (OLD.modification_time IS NOT DISTINCT FROM NEW.modification_time)
  EXECUTE PROCEDURE touch_modification_time();

-- etc for each table
Run Code Online (Sandbox Code Playgroud)

这很快就会变得乏味;特别是因为它们完全相同,除了表名。

有没有办法可以减少每个表所需的样板文件?或者甚至可能通过一个默认作用于每个表的触发器完全消除它?

postgresql trigger audit metadata update

5
推荐指数
1
解决办法
3068
查看次数

标签 统计

audit ×1

metadata ×1

postgresql ×1

trigger ×1

update ×1