Tom Lane writes:
> > My another question is: When both UPDATE trigger (and
> > its trigger function) and UPDATE CASCADE constraint
> > are both defined, is the custom UPDATE trigger or the
> > UPDATE CASCADE constraint fired first?
>
> > I wish the constraint will be fired first.
>
> That seems fairly arbitrary; someone else might wish the opposite,
> depending on the details of what they want to do.
We should probably check first whether the SQL standard has anything to
say about the relative ordering of foreign key cascade actions versus
triggers. (I would tend to think that triggers come after FK actions.
However, things might get tricky when cascade actions fire triggers of
their own.)
The order of execution of "pure" triggers meanwhile is defined thus:
The order of execution of a set of triggers is ascending by value
of their timestamp of creation in their descriptors, such that the
oldest trigger executes first. If one or more triggers have the
same timestamp value, then their relative order of execution is
implementation-defined. [4.35]
This is probably what happens in practice anyway, so it might make sense
to follow this rule.
--
Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter