Re: FOR EACH ROW triggers on partitioned tables
Alvaro Herrera <alvherre@alvh.no-ip.org>
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: Robert Haas <robertmhaas@gmail.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Pg Hackers <pgsql-hackers@postgresql.org>, Simon Riggs <simon@2ndquadrant.com>
Date: 2018-02-15T21:55:25Z
Lists: pgsql-hackers
Amit Langote wrote: > On 2018/02/15 6:26, Alvaro Herrera wrote: > > Another option is to rethink this feature from the ground up: instead of > > cloning catalog rows for each children, maybe we should have the trigger > > lookup code, when running DML on the child relation (the partition), > > obtain trigger entries not only for the child relation itself but also > > for its parents recursively -- so triggers defined in the parent are > > fired for the partitions, too. I'm not sure what implications this has > > for constraint triggers. > > > > The behavior should be the same, except that you cannot modify the > > trigger (firing conditions, etc) on the partition individually -- it > > works at the level of the whole partitioned table instead. > > Do you mean to fire these triggers only if the parent table (not a child > table/partition) is addressed in the DML, right? If the table directly > addressed in the DML is a partition whose parent has a row-level trigger, > then that trigger should not get fired I suppose. No, I think that would be strange and cause data inconsistencies. Inserting directly into the partition is seen as a performance optimization (compared to inserted into the partitioned table), so we don't get to skip firing the triggers defined on the parent because the behavior would become different. In other words, the performance optimization breaks the database. Example: suppose the trigger is used to maintain an audit record trail. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Allow FOR EACH ROW triggers on partitioned tables
- 86f575948c77 11.0 landed
-
Fix CommandCounterIncrement in partition-related DDL
- 4dba331cb3dc 11.0 landed
-
Mention trigger name in trigger test
- cef60043dd27 11.0 landed
-
Fix transition tables for partition/inheritance.
- 501ed02cf6f4 10.0 cited