我有一个表格,并使用触发器在记录更改时更新“修改时间戳”。我是通过 BEFORE 触发器来实现的:
CREATE OR REPLACE FUNCTION update_modified()
RETURNS trigger AS
$$
BEGIN
NEW.modified = now();
RETURN NEW;
END;
$$
LANGUAGE plpgsql;
CREATE TRIGGER contact_update_modified
BEFORE UPDATE
ON contacts
FOR EACH ROW
EXECUTE PROCEDURE update_modified();
然后我对表进行了分区,当我尝试添加触发器时,出现以下提示:
ERROR: "contacts" is a partitioned table
DETAIL: Partitioned tables cannot have BEFORE / FOR EACH ROW triggers.
SQL state: 42809
如果我将它更改为触发器(AFTER),它不会更新修改字段(这是有道理的)。
如果我手动将触发器添加到每个子分区表中,它似乎可以工作。我可以这样做,但这并不理想。有更好的方法吗?