On Thu, May 26, 2016 at 8:50 AM, Thomas Güttler <
guettl...@thomas-guettler.de> wrote:

> I (and a team mate) guess that the docs miss information about the timing
> of triggers,
> which are not constraint triggers:
>
> https://www.postgresql.org/docs/devel/static/sql-createtrigger.html
>
>
> {{{
> When the CONSTRAINT option is specified, this command creates a constraint
> trigger. This is the same as a regular trigger except that the timing of
> the trigger firing can be adjusted using SET CONSTRAINTS. Constraint
> triggers must be AFTER ROW triggers on tables. They can be fired either at
> the end of the statement causing the triggering event, or at the end of the
> containing transaction; in the latter case they are said to be deferred. A
> pending deferred-trigger firing can also be forced to happen immediately by
> using SET CONSTRAINTS. Constraint triggers are expected to raise an
> exception when the constraints they implement are violated.
> }}}
>
> OK, timing of constraint triggers is explained.
>
> But I think the docs don't state the timing of normal AFTER triggers.
>
> Or am I blind?
>

​Through omission.  Constraint triggers can optionally be deferred - given
the specificity that means normal triggers cannot.

By the time a given statement has completed all relevant normal triggers
will have fired.  The various timings of combinations of (before/after +
row/statement) are not explicitly documented though there doesn't seem to
be non-intuitive behavior going on.

​Maybe knowing why you are asking the question will help us to understand
if/how things could be improved.

David J.
​

​

Reply via email to