【发布时间】:2019-11-14 18:34:04
【问题描述】:
我有一个带有触发器的表,该触发器在记录更改时更新“已修改”时间戳。我用 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 触发器,它不会更新修改后的字段(这是有道理的)。
如果我手动将触发器添加到每个子分区表,它似乎确实工作。我可以做到这一点,但这并不理想。有没有更好的办法?
【问题讨论】:
标签: postgresql triggers partitioning database-trigger database-partitioning