Re: Update view/table rule order of operations or race condition

From: Dan Fitzpatrick <dan(at)eparklabs(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Update view/table rule order of operations or race condition
Date: 2010-03-09 18:35:23
Message-ID: DD3DACB0-408C-410B-9261-B702705FBD59@eparklabs.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mar 9, 2010, at 11:00 AM, Tom Lane wrote:

> Dan Fitzpatrick <dan(at)eparklabs(dot)com> writes:
>> The rule is creating a new value from the sequence a_a_id_seq for
>> "new.options_id" on each UPDATE call. How do I use the variable
>> new.options_id in the three update statements without incrementing
>> the
>> sequence again?
>
> You don't. This is one of the major disadvantages of rules: they're
> macros, not functions, and as such don't have any real local
> variables.
> You should probably look into whether you can do what you want with a
> trigger instead of a rule.
>
> regards, tom lane

Can you have a trigger on a view? I thought you can only use rules
with a view.

As another option, can you pass "NEW" (the incoming data record) as a
variable to a function or does each field in NEW have to be explicitly
passed to the function?

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2010-03-09 18:41:26 Re: \copy command: how to define a tab character as the delimiter
Previous Message Tom Lane 2010-03-09 18:27:07 Re: \copy command: how to define a tab character as the delimiter