On 28 June 2013 17:17, Tom Lane <t...@sss.pgh.pa.us> wrote:

> Simon Riggs <si...@2ndquadrant.com> writes:
> > We claim conformance to the standard on this.
>
> Not really.  The fact that we do RI actions via triggers is already not
> what the spec envisions.  As an example, it's well known that you can
> subvert RI actions entirely by installing triggers on the target table
> that make the RI actions into no-ops.  It would be difficult to justify
> that behavior by reference to the standard, but we leave it like that
> because there are effects you really couldn't get if RI actions were
> somehow lower-level than triggers.  (Simple example: if you have a
> business rule that updates on a table should update a last-modified
> timestamp column, you might wish that updates caused by an ON UPDATE
> CASCADE action did that too.)
>

I'm certainly happy with the way our RI works, for those reasons and others.

This was just a matter of altering the precedence since applications
written to the standard won't work right, not about altering the level at
which RI acts.


>
> > Should we have a parameter to define precedence of RI checks?
>
> That seems like a recipe for breaking things.  Apps already have the
> ability to control whether their triggers fire before or after the RI
> triggers; changing the rule for trigger firing order is going to break
> anybody who's depending on that.  I'm inclined to leave well enough
> alone here --- especially given that, AFAIR, this is the first complaint
> of this sort in the fifteen years or so that PG's RI actions have worked
> this way.
>

It won't break anything because it would be a parameter, not a change in
default behaviour.

If your completely set against this then I'll add a note to our conformance
statement.

-- 
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Reply via email to