Re: Rules with Conditions: Bug, or Misunderstanding
От | Tom Lane |
---|---|
Тема | Re: Rules with Conditions: Bug, or Misunderstanding |
Дата | |
Msg-id | 19579.975544973@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Rules with Conditions: Bug, or Misunderstanding ("Joel Burton" <jburton@scw.org>) |
Ответы |
Re: [HACKERS] Re: Rules with Conditions: Bug, or Misunderstanding
Re: Rules with Conditions: Bug, or Misunderstanding Re: Rules with Conditions: Bug, or Misunderstanding |
Список | pgsql-sql |
"Joel Burton" <jburton@scw.org> writes: > create rule dev_ins as on update to dev_col_comments where > old.description isnull do instead insert into pg_description ( objoid, > description) values (old.att_oid, new.description); > create rule dev_upd as on update to dev_col_comments where > old.description notnull do instead update pg_description set > description=new.description where objoid=old.att_oid; > This doesn't work: I get a "cannot update view w/o rule" error > message, both for fields where description was null, and for fields > where it wasn't null. Hm. Perhaps the "cannot update view" test is too strict --- it's not bright enough to realize that the two rules together cover all cases, so it complains that you *might* be trying to update the view. As the code stands, you must provide an unconditional DO INSTEAD rule to implement insertion or update of a view. I'm not sure this is a big problem, though, because the solution is simple: provide an unconditional rule with multiple actions. For example, I think this will work: create rule dev_upd as on update to dev_col_comments do instead ( insert into pg_description (objoid, description) select old.att_oid, new.description WHERE old.description isnull; updatepg_description set description=new.description where objoid = old.att_oid; ) but I haven't tried it... regards, tom lane
В списке pgsql-sql по дате отправления: