pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Markus Schaber <schabios@logi-track.com>
To: PostgreSQL SQL <pgsql-sql@postgresql.org>
Subject: Re: Update instead rules on Views
Date: Tue, 2 Nov 2004 16:42:36 +0100
Message-ID: <20041102164236.639f10c9@kingfisher.intern.logi-track.com> (raw)
In-Reply-To: <20041102162037.306d4d0a@kingfisher.intern.logi-track.com>
References: <20041102130507.2acf486a@kingfisher.intern.logi-track.com>
	<20041102162037.306d4d0a@kingfisher.intern.logi-track.com>

Hello,

On Tue, 2 Nov 2004 16:20:37 +0100
Markus Schaber <schabios@logi-track.com> wrote:

> > -- But to remain compatibility with old apps, we also need to manage
> > -- updates to the view, which are to be rewritten as follows:
> > CREATE RULE testview_update_rule 
> > AS ON UPDATE TO testview DO INSTEAD 
> >     UPDATE realdata SET 
> >         index = NEW.index,
> >         data = NEW.data,
> >         obsolete=NULL
> >     ;
> 
> I now got it to work with adding a "WHERE index=NEW.index" to the view.

This seems only to work when I update on the INDEX row. I now modified
the rule to look like:

CREATE RULE testview_update_rule 
AS ON UPDATE TO testview DO INSTEAD 
    UPDATE realdata SET 
        index = NEW.index,
        data = NEW.data,
        obsolete=NULL
    WHERE index = OLD.index;

This seems to work now for arbitrary columns, provided that index is an
unique row.

When I have a table that looks like

 index | data  | obsolete 
-------+-------+----------
     2 | test  |         
     3 | blubb |         
     1 | nono  |         
     3 | hallo |         

and I issue
  
  viewtest=# update testview set data='blob' where data='hallo';

I get:
  UPDATE 2

and it really updated 2 rows.

As far as I understand now, I need a primary key in the underyling table
as the qualification from the original statemet is applied to the view
results, and not propagated to the underlying table.

Thanks,
Markus

-- 
markus schaber | dipl. informatiker
logi-track ag | rennweg 14-16 | ch 8001 zürich
phone +41-43-888 62 52 | fax +41-43-888 62 53
mailto:schabios@logi-track.com | www.logi-track.com



view thread (3+ messages)

Message-ID: <20041102164236.639f10c9@kingfisher.intern.logi-track.com>
Permalink:  ../20041102164236.639f10c9@kingfisher.intern.logi-track.com/
Also on:    postgresql.org/message-id/20041102164236.639f10c9@kingfisher.intern.logi-track.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: schabios@logi-track.com
  Subject: Re: Update instead rules on Views
  In-Reply-To: <20041102164236.639f10c9@kingfisher.intern.logi-track.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox