> Rules mess with queries. For data copying/archiving kinds of tasks,
> triggers are a better bet, like you suggested in your original post.
>
>> Let me put that a different way:  rules can *only* be used where data
>> integrity is not at stake.  My own thinking is that it might be time to
>> make an official recommendation that they are only safe for views.
>
> NEW and OLD mean different things in a PL/pgSQL context and a Rules
> context.
> In PL/pgSQL NEW and OLD are values, in Rules (which specifically mess
> with
> queries) they are expressions.
>
> The fact that the same words mean different things in different contexts
> is a bit unfortunate but not as messy as say using "NEWEXPR" in the
> Rules context would be.
    Since we now have UPDATE/INSERT/DELETE RETURNING, one could imagine the
rules using these to access the actual rows and not the expressions...
    But there is a perfectly valid argument against that :
    - There already is a mechanism designed specifically for this purpose
(triggers).
    - It works perfectly.
    - Rules are supposed to rewrite queries to do stuff like views.
    It should be mentioned in the docs, though : someone with an account on
the PG site should copypaste this mail exchange in the comments field...