Re: view rules
От | Ross J. Reedstrom |
---|---|
Тема | Re: view rules |
Дата | |
Msg-id | 20011206153228.E10995@rice.edu обсуждение исходный текст |
Ответ на | view rules (Oleg Lebedev <olebedev@waterford.org>) |
Список | 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@rice.edu Executive Director phone: 713-348-6166 Gulf Coast Consortium for Bioinformatics fax: 713-348-6182 Rice University MS-39 Houston, TX 77005
В списке pgsql-sql по дате отправления: