Re: view rules

From: "Ross J(dot) Reedstrom" <reedstrm(at)rice(dot)edu>
To: Oleg Lebedev <olebedev(at)waterford(dot)org>
Cc: Postgres SQL Mailing List <pgsql-sql(at)postgresql(dot)org>
Subject: Re: view rules
Date: 2001-12-06 21:32:28
Message-ID: 20011206153228.E10995@rice.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Thu, Dec 06, 2001 at 01:17:44PM -0700, Oleg Lebedev wrote:
> Hi everybody,
> I am trying to create an update rule for a view. It's created fine, and
> I can find it in pg_rules, but when I try to update the view, I get the
> usual error:
> ERROR: Cannot update a view without an appropriate rule.
>
> My rule definitions is as follows:
> CREATE RULE update_priority AS ON UPDATE TO progress_report
> WHERE NEW.priority != OLD.priority
> DO INSTEAD UPDATE activity SET priority=NEW.priority
> WHERE activity.productcode = OLD.product_code
> AND activity.actname=OLD.component;
>
> I am trying to update the view as follows:
> update progress_report set priority=2 where product_code='m3' and
> component='act';
>

The View/Rule system is very picky: you have to have rules to cover
_every_ possible update case before it'll allow any to go through.
The usual way aroun this is to create a 'do nothing' rule with no WHERE
clause:

ifs_test=# create rule update_any as ON UPDATE TO progress_report DO INSTEAD NOTHING;

ifs_test=# select * from progress_report;
priority | product_code | component
----------+--------------+-----------
1 | 3 | act
(1 row)

ifs_test=# update progress_report set priority=2 where product_code='3' and component='act';
UPDATE 1
ifs_test=# select * from progress_report;
priority | product_code | component
----------+--------------+-----------
2 | 3 | act
(1 row)

(I fudged your product code, since I'd created an int in my test case: if
you'd sent along schema for the table, my test would have gone _much_ faster)

Ross
--
Ross Reedstrom, Ph.D. reedstrm(at)rice(dot)edu
Executive Director phone: 713-348-6166
Gulf Coast Consortium for Bioinformatics fax: 713-348-6182
Rice University MS-39
Houston, TX 77005

In response to

  • view rules at 2001-12-06 20:17:44 from Oleg Lebedev

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Jean-Michel Chabanne 2001-12-06 21:43:15 Re: Select into
Previous Message Gregory Wood 2001-12-06 20:37:23 Re: update returns 1, but no changes have been made