public inbox for [email protected]  
help / color / mirror / Atom feed
From: Bruce Momjian <[email protected]>
To: Tom Lane <[email protected]>
Cc: Thomas Munro <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Andrew Gierth <[email protected]>
Subject: Re: Trigger behaviour not as stated
Date: Sun, 28 Jan 2018 17:58:24 -0500
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
	<[email protected]>
	<[email protected]>
	<CAEepm=1cAO8y4dFv_xd=43iP7f4T3A2hYAzjgjQagHtt7H87Fw@mail.gmail.com>
	<[email protected]>
	<[email protected]>
	<[email protected]>

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 +


Attachments:

  [text/x-diff] trigger.diff (1.5K, 2-trigger.diff)
  download | inline diff:
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.


view thread (13+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected], [email protected]
  Subject: Re: Trigger behaviour not as stated
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox