On Sun, Jan 28, 2018 at 03:57:07PM -0500, Tom Lane wrote:
> Bruce Momjian <[email protected]> writes:
> > Uh, I don't think we want to highlight the statement vs row difference
> > here but the fact that statement triggers fire on the referenced object
> > and not on the effected rows. I have attached an updated patch which I
> > think is an improvement
>
> statement-level triggers for its partitions or child tables. In
> contrast,
> ! row-level triggers are fired on the rows in effected partitions or
> ! child tables, even if they are not referenced in the query.
>
> I still think that that's not well written. A large part of the confusion
> here is over what "referenced" means. To my mind, child tables/partitions
> are referenced by an inherited query, just not explicitly. So that's why
> I'd prefer wording like "directly named in the query" (or "explicitly
> named"). If you insist on using "referenced" you could write "explicitly
> referenced", but IMO that's longer and no clearer.
>
> A lesser complaint is that this reads like the antecedent of "they" is the
> rows, not the tables containing them, making the meaning of "referenced"
> even less clear.
>
> Maybe something like
>
> In contrast, row-level triggers are fired for individual row change
> events, and the triggers that are fired for an event are those
> attached to the specific table containing the changed row, even if
> it is a partition or child table not directly named in the query.
Oh, I am sorry. I was focused on the first part of the sentence and
didn't notice your change to the second part. How is this attachment?
--
Bruce Momjian <[email protected]> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +
diff --git a/doc/src/sgml/ref/create_trigger.sgml b/doc/src/sgml/ref/create_trigger.sgml
new file mode 100644
index a8c0b57..6519757
*** a/doc/src/sgml/ref/create_trigger.sgml
--- b/doc/src/sgml/ref/create_trigger.sgml
*************** UPDATE OF <replaceable>column_name1</rep
*** 501,509 ****
<para>
Modifying a partitioned table or a table with inheritance children fires
! statement-level triggers directly attached to that table, but not
statement-level triggers for its partitions or child tables. In contrast,
! row-level triggers are fired for all affected partitions or child tables.
If a statement-level trigger has been defined with transition relations
named by a <literal>REFERENCING</literal> clause, then before and after
images of rows are visible from all affected partitions or child tables.
--- 501,510 ----
<para>
Modifying a partitioned table or a table with inheritance children fires
! statement-level triggers directly attached to the referenced table, but not
statement-level triggers for its partitions or child tables. In contrast,
! row-level triggers are fired on the rows in effected partitions or
! child tables, even if they are not explicitly named in the query.
If a statement-level trigger has been defined with transition relations
named by a <literal>REFERENCING</literal> clause, then before and after
images of rows are visible from all affected partitions or child tables.